- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用一个大的 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/
使用登录后,我想吐出用户名。 但是,当我尝试单击登录按钮时, 它给了我力量。 我看着logcat,但是什么也没显示。 这种编码是在说。 它将根据我在登录屏幕中输入的名称来烘烤用户名。 不会有任何密码。
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎是题外话,因为它缺乏足够的信息来诊断问题。 更详细地描述您的问题或include a min
我是一名优秀的程序员,十分优秀!