gpt4 book ai didi

java - GSON 我可以只转换部分 JSON,我想要的部分 使用 GSON.fromJSON()

转载 作者:太空宇宙 更新时间:2023-11-04 07:35:48 27 4
gpt4 key购买 nike

我正在使用一个大的 JSON 对象,它具有来自多个请求的响应。

我正在处理的部分只需要很少的对象,而且它们并不总是在前面。例如 json 结构是:

**

json = {
mainDocument: {
element1: {
element11: "value11",
element12: {
element121: "value121"
}
},
element2: {
element21: {
element211: {
element2111: "value2111",
element2112: {
element21121: "value21121"
}
}
},
element22: "value22"
}
}
}

**

此结构可以根据请求是否成功而改变。

现在,我想创建一个值为 element11、element 22、element21121 的 java 对象。

目前我只是检查 json 并使用对象的 setter。

我想知道是否有办法让 GSON 处理这个问题,而不必自己解析 json。

预先感谢您提供的任何帮助。

最佳答案

我不知道我是否很好地理解你的问题,但为了用 Gson 反序列化 JSON 响应,我认为最正确的方法是创建一个类结构来封装响应中的数据。在你的情况下类似:

class Response
MainDocument mainDocument

class MainDocument
Element element1
Element element2

class Element
...

如果您只需要 JSON 中的一些数据,您可以在类结构中省略属性,Gson 将忽略它们。如果一个对象可以在不同的响应中具有不同的内容,则可以具有如下所示的内容:

class Response
MainDocument mainDocument
Error error

Gson 将使用根元素 mainDocument (如问题中的元素)或根元素 error 来解析响应...这允许您根据变量响应调整解析...

显然,要遵循这种方法,您需要了解所有可能的响应结构。如果你的问题是你的 JSON 响应是绝对可变的,并且你无法创建一个类结构来包装它,你总是可以进行手动解析,如下所示:

JsonParser parser = new JsonParser();
JsonObject rootObj = parser.parse(jsonString).getAsJsonObject();
String element21121 = rootObj
.getAsJsonObject("mainDocument")
.getAsJsonObject("element2")
.getAsJsonObject("element21")
.getAsJsonObject("element211")
.getAsJsonObject("element2112")
.getAsString("element21121");

关于java - GSON 我可以只转换部分 JSON,我想要的部分 使用 GSON.fromJSON(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16902405/

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