我正在尝试解析以下 JSON 对象:
{
"key1": "value1",
"key2": "value2",
"key3": {
"subkey1": {
"subsubkey1": "value",
"subsubkey2": "value"
},
"subkey2": {
"subsubkey1": "value",
"subsubkey2": "value"
}
...........other dynamic subkeys..............
}
}
我尝试了以下方法:
public class MyObject{
String key1, key2;
KEY3 key3;
public class KEY3{
public class SUBKEY{
String subsubkey1;
String subsubkey2;
//getters and setters
}
}
//getters and setters
}
然后执行以下操作:
MyObject mObject = gson.fromJson(jsonMessage, MyObject.class);
其中jsonMessage
是上面的JSON字符串,子键是动态的,所以我不知道有多少个子键。但是key3
变成了null
.所以,我的问题是,如何使用 gson.fromJson 获取 key3 及其子键和子值?我不想这样做:
JSONObject jObject= new JSONObject(jsonMessage);
JSONObject key3Object = jObject.getJsonObject("key3");
我想直接使用gson.fromJson();
。
最佳答案
您可以尝试使用三个不同的 POJO 类,它们是此 JSON 字符串的精确副本。
class MyObject {
private String key1, key2;
private KEY3 key3;
}
class KEY3 {
private SUBKEY3 subkey1;
private SUBKEY3 subkey2;
// getters and setters
}
class SUBKEY3 {
private String subsubkey1;
private String subsubkey2;
}
...
MyObject data = new Gson().fromJson(jsonString, MyObject.class);
System.out.println(new GsonBuilder().setPrettyPrinting().create().toJson(data));
输出:
{
"key1": "value1",
"key2": "value2",
"key3": {
"subkey1": {
"subsubkey1": "value",
"subsubkey2": "value"
},
"subkey2": {
"subsubkey1": "value",
"subsubkey2": "value"
}
}
}
<小时/>
如果键是动态并且事先不知道 JSON 字符串,则尝试使用 Map<String,Object>
使用 TypeToken
Type type = new TypeToken<Map<String, Object>>() {}.getType();
Map<String, Object> data = new Gson().fromJson(jsonString, type);
System.out.println(new GsonBuilder().setPrettyPrinting().create().toJson(data));
关于java - 如何编写必要的 java 类以对以下 json 对象使用 gson.fromJson() ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25182993/