我一直在寻找与将JSON字符串转换为Java对象有关的示例,但没有找到任何好的示例。我发现的那个曾经真的很基础,却没有真正处理复杂的JSON字符串。

我正在制作一个使用谷歌翻译API将字符串从英语翻译成不同语言的应用程序。 Google对查询的回应是...以下文字采用JSON格式,

{"data":{"translations":[{"translatedText":"Bonjour tout le monde"}]}}

到目前为止,我的方法是使用GSON API,但是实际上,我被该如何处理这个复杂的结果并创建Java对象所困扰?

我的java课是...
import com.google.gson.Gson;

public class JSONConverter {

private String traslatedText;

/**
 * Create an object of it self by manipulating json string
 * @param json type: String
 * @return String Translated text result from JSON responce
 */
public String getTranslation(String json){
    Gson gson = new Gson();
    JSONConverter obj = gson.fromJson(json, JSONConverter.class);

    return obj.getTranslationForReturn();
}

/**
 * Method return a translation to a private call
 * @return String translation
 */
private String getTranslationForReturn(){
    return this.traslatedText;
 }
}

由于我未获得“Bonjour tout le monde”的返回,因此上述方法无效。

如果有人可以扩展我的理解,那将是非常荣幸。

最佳答案

编辑:
您需要Java Data类作为JSON的精确模型。所以你

{"data":{"translations":[{"translatedText":"Bonjour tout le monde"}]}}

变成:
class DataWrapper {
    public Data data;

    public static DataWrapper fromJson(String s) {
        return new Gson().fromJson(s, DataWrapper.class);
    }
    public String toString() {
        return new Gson().toJson(this);
    }
}
class Data {
    public List<Translation> translations;
}
class Translation {
    public String translatedText;
}

随着对象模型变得越来越复杂,org.json样式代码趋向于不可读,而gson/jackson样式对象映射仍然只是普通的Java对象。

07-24 09:47
查看更多