我有一些 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);
关于java - GSON 没有正确解析嵌套的 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54973135/