GSON no anidada analizar JSON objetos adecuadamente

hará lo siguiente:

Tengo algunos datos en la forma de JSON, y estaba usando la biblioteca GSON para analizar en un objeto de Java para ser utilizado en porciones posteriores de la código. El JSON tiene objetos anidados, que no parecen ser cada vez analizado adecuadamente, y no puedo entender por qué, ya que el objeto externo está siendo convertida según se desee. Aquí es un ejemplo de los datos JSON que estoy viendo:

{  
   "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"
   ]
}

Solía ​​codebeautify para crear las clases de objetos de Java necesarios para el JSON (todo está a 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
}

Aquí está el código que estoy usando para analizar el JSON, donde el JSON variable es un parámetro de entrada para el método:

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);

Cuando llamo a métodos como building.getTitle () o building.getCid (), consigo los valores apropiados, sin embargo cuando lo haga building.getLocation () (donde ubicación es un objeto separado), el código vuelve nula. No he podido averiguarlo, ¿es un problema con la forma en que funciona GSON? O estoy haciendo algo mal en mi código?

Michael Ziober:

En primer lugar, el cambio:

Location LocationObject;

a:

private Location location;

Y, puede deserialise JSONmucho más fácil:

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

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=224542&siteId=1
Recomendado
Clasificación