Java GSON我只能转换JSON的一部分,即我希望使用GSON.fromJSON()转换的部分

Java GSON我只能转换JSON的一部分,即我希望使用GSON.fromJSON()转换的部分,java,gson,Java,Gson,我正在处理一个大的JSON对象,它有来自多个请求的响应 我正在做的部分只需要很少的物体,而且它们并不总是在前面。 例如,json结构是: ** ** 此结构可以根据请求是否成功而改变 现在,, 我想创建一个值为element11、element22、element21121的java对象 目前我只是检查json并使用对象的setter 我想知道是否有办法让GSON处理这个问题,而不必自己解析json 提前感谢您提供的任何帮助 我不知道我是否非常理解你的问题,但是为了用Gson反序列化JSON响应

我正在处理一个大的JSON对象,它有来自多个请求的响应

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

**

**

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

现在,, 我想创建一个值为element11、element22、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
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");
Gson将使用根元素
mainDocument
(如问题中的一个)或根元素
error
解析响应。。。这允许您调整解析以适应变量响应

显然,要采用这种方法,您需要知道所有可能的响应结构。如果您的问题是JSON响应是绝对可变的,并且您无法创建类结构来包装它,那么您始终可以执行手动解析,如下所示:

class Response
  MainDocument mainDocument
  Error error
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");

是的,我不能将JSON包装在对象中,我当前的解决方案涉及解析。由于json结构相当大,解析代码很难阅读。所以我想知道我是否可以取而代之的是地图绘制者。谢谢您的回复。@sorryconnect,那么您目前正在使用与我所写的类似的手动解析?你想改变它。。。你读过自定义序列化程序/反序列化程序吗?