gpt4 book ai didi

java - 如何编写必要的 java 类以对以下 json 对象使用 gson.fromJson() ?

转载 作者:行者123 更新时间:2023-12-01 22:47:04 25 4
gpt4 key购买 nike

我正在尝试解析以下 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com