[英]Converting json string to java object?
我一直在寻找与将JSON字符串转换为Java对象相关的示例,但没有找到任何好的示例。 我找到的那个是非常基本的,并没有真正处理复杂的JSON字符串。
我正在制作一个应用程序,使用谷歌翻译api将字符串从英语翻译成不同的语言。 谷歌对查询的回应是......愚弄文本格式为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数据类是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对象。
我通常喜欢使用普通的org.json库
用它作为:
// make sure the quotes are escaped
String str = "{\"data\":{\"translations\":[{\"translatedText\":\"Bonjour tout le monde\"}]}}";
// the object data is inside a "global" JSONObject
data = new JSONObject(str).getJSONObject("data");
// get a JSONArray from inside an object
JSONArray translations = data.getJSONArray("translations");
// get the first JSONObject from the array
JSONObject text = translations.getJSONObject(0);
// get the String contained in the object -> logs Bonjour tout le monde
Log.d("***>Text", text.getString("translatedText"));
也许这么多代码不如我所希望的那样清晰。 这是我会这样做的功能:
public String getTranslation(String json){
JSONObject data = new JSONObject(json).getJSONObject("data");
return data.getJSONArray("translations").getJSONObject(0).getString("translatedText");
}
检查这个将JSON转换为Java ,我想你可以将一个类定义为对象并传递它。 所以,创建一些类并传递它。
Data obj = gson.fromJson(json, Data.class);
class Data{
public List<Data> getTranslation(){
return translations;
}
}
尝试类似的东西。 您可能需要进行一些实验。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.