[英]GSON not parsing nested JSON objects properly
我有一些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所需的Java對象類(所有內容都在Building.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()(其中Location是一個單獨的對象)時,代碼返回null。 我一直無法弄清楚,這與GSON的工作方式有關嗎? 還是我在代碼中做錯了什么?
首先,更改:
Location LocationObject;
至:
private Location location;
而且,您可以更輕松地反序列化JSON
:
Gson gson = new GsonBuilder().create();
Building building = gson.fromJson(json, Building.class);
Json屬性名稱應該與您的POJO類屬性匹配,它應該是location
而不是LocationObject
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 location;
ArrayList < Object > offices = new ArrayList < Object > ();
//Setters and getters have been omitted
}
看來您的命名不好。 建築類您的位置對象被稱為LocationObject
里面的時候你的JSON對象被稱為location
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.