gpt4 book ai didi

java - GSON - 从 Java 创建 JSON 树结构

转载 作者:行者123 更新时间:2023-11-29 05:58:15 27 4
gpt4 key购买 nike

有几个问题,使用 GSON。我感觉 GSON 可能不是我正在寻找的库,它能够为我提供一个我以后可以使用的 JSON 对象。

我正在从数据库中读取数据以填充我稍后将使用的 json 对象。 json 对象的输出应该类似于下面的 json,其中涉及 parent 和 child 。它形成了一个基于小树的结构:

var json = { 
id: "1",
name: "Joe Smith",
data: {
"email": "",
"phone": "123-123-1233"},
children: [{
id: "Tim Anderson",
name: "Tim Anderson",
data: {
"email": "x@gmail.com",
"phone": "123-123-1233"
},
children: []
},{
id: "Christopher Johnson",
name: "Christopher Johnson",
data: {
"email": "x@gmail.com",
"phone": "123-123-1233"
},
children: []
},{
id: "Kate Green",
name: "Kate Green",
data: {

},
children: [{
id: "Gary Jones",
name: "Gary Jones",
data: {},
children: []
}, {
id: "Melissa Brand",
name: "Melissa Brand",
data: {},
children: []
}]
}
]
}

如何创建一个 GSON 对象,类似于上面的结构,我可以序列化为具有这种层次结构的 JSON?我尝试过使用 map 和其他集合 - 但我很难获得我想要的结果。因此,为什么我要问 GSON 是否是我真正想要的 JSON 序列化。

最佳答案

您是否尝试过默认的 java JSONTokener 和其他类似的解析器?

      BufferedReader reader = new BufferedReader(new FileReader("jsonfile.json"));
StringBuilder builder=new StringBuilder();
for(String line=null;(line = reader.readLine()) != null;){
builder.append(line).append("\n");
}
JSONTokener jsonTokener=new JSONTokener(builder.toString());
JSONObject finalJson=new JSONObject(jsonTokener);

在你的例子中,如果你想在一个层次结构里面找到额外的数据,那么遍历如下

 JSONArray children=finalJson.getJSONArray("children");
for(int i = 0;i<children.length;i++){
JSONObject childRecData = children.getJSONObject(i); //returns the ith JSONObject containing id, name, data, etc.
int id = childRecData.getString();
String name = childRecData.getString();
JSONObject data = childRecData.getJSONObject(0);
}

注意 对于较大的 JSON 文件(具有荒谬层次结构的文件),例如 HTTP 数据库请求,建议使用 Nishant 建议的 GSON 的 POJO(普通旧 Java 对象)模型

这是 more information

这是一个 similar question

关于java - GSON - 从 Java 创建 JSON 树结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11194343/

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