GSON不解析嵌套的JSON对象正确

将:

我在JSON的形式的一些数据,以及使用该GSON库来解析为一个Java对象中的代码的后面部分中使用了。的JSON具有嵌套的对象,这似乎并没有被正确地得到解析,我无法找出原因,如所需外部对象正在转换。下面是我在看的JSON数据的例子:

{  
   "title":"Emergency Services Headquarters",
   "description":"",
   "cid":"C70856",
   "building_id":"4714",
   "building_number":"3542",
   "campus_code":"20",
   "campus_name":"Busch",
   "location":{  
      "name":"Emergency Services Headquarters",
      "street":"129 DAVIDSON ROAD",
      "additional":"",
      "city":"Piscataway",
      "state":"New Jersey",
      "state_abbr":"NJ",
      "postal_code":"08854-8064",
      "country":"United States",
      "country_abbr":"US",
      "latitude":"40.526306",
      "longitude":"-74.461470"
   },
   "offices":[  
      "Emergency Services"
   ]
}

我用codebeautify创建的JSON(一切都内Building.java)所需的Java对象类:

public class Building {
    private String title;
    private String description;
    private String cid;
    private String building_id;
    private String building_number;
    private String campus_code;
    private String campus_name;
    Location LocationObject;
    ArrayList < Object > offices = new ArrayList < Object > ();

    //Setters and getters have been omitted

}

class Location {
    private String name;
    private String street;
    private String additional;
    private String city;
    private String state;
    private String state_abbr;
    private String postal_code;
    private String country;
    private String country_abbr;
    private String latitude;
    private String longitude;

    //Setters and getters have been omitted
}

下面是我使用解析JSON,其中变量JSON是用于该方法的输入参数的代码:

Gson obj = new Gson();
JsonArray buildingsArray = new JsonArray();
JsonParser parser = new JsonParser();
JsonElement jsonElement = parser.parse(json);
buildingsArray = jsonElement.getAsJsonArray();
for (int i = 0; i < buildingsArray.size(); i++)
    Building building = obj.fromJson(buildingsArray.get(i), Building.class);

当我打电话的方法,如building.getTitle()或building.getCid(),我得到了适当的值,但是当我做building.getLocation()(其中位置是一个单独的对象),代码返回NULL。我一直没能弄明白,是它与GSON工作方式的问题?还是我在做我的代码出问题了吗?

迈克尔Ziober:

首先,改变:

Location LocationObject;

至:

private Location location;

而且,您可以deserialise JSON容易得多:

Gson gson = new GsonBuilder().create();
Building building = gson.fromJson(json, Building.class);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章