У меня есть некоторые данные в форме 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 для создания классов объектов Java, необходимых для JSON (все находится внутри 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 - отдельный объект), код возвращает ноль.Я не смог понять это, это проблема с тем, как работает GSON?Или я что-то не так делаю в своем коде?