in Android, JAVA

Mappare una risposta JSON con nomi differenti su Android

Supponiamo di voler convertire la seguente risposta JSON in un oggetto Java le cui proprietà hanno un nome differente da quello specificato nella risposta HTTP (situazione tipica nei progetti in cui lavoro):

{ "nome": "Roberto", "cognome": "Conte Rosito", "età": "16" }

Utilizzando Jackson è possibile mappare la risposta in questo modo:

class Person {

  @JsonProperty("nome")
  private String name;

  @JsonProperty("cognome")
  private String surname;

  @JsonProperty("età")
  private String age;

  // ... Getter & Setter ... 
}

Apriamo il file build.gradle e aggiungiamo i riferimenti necessari:

dependencies {
  // ... Other deps ...
  compile (
    [group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.4.1'],
    [group: 'com.fasterxml.jackson.core', name: 'jackson-annotations', version: '2.4.1'],
    [group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.4.1']
  )
}

Successivamente, all’interno del nostro progetto, possiamo convertire la risposta in un oggetto di tipo Person (avendo precedentemente realizzato la classe) utilizzando queste istruzioni:

  String jsonResponse = ... ;
  ObjectMapper objectMapper = new ObjectMapper();
  Person personObject = objectMapper.readValue(jsonResponse, Person.class);

Ogni campo dell’oggetto marcato con l’annotazione @JsonProperty sarà processato secondo le direttive specificate all’interno dello stesso, in questo caso appunto il nome da utilizzare per la mappatura che dovrà essere diverso da quello utilizzato per dichiarare il campo all’interno del codice Java.

Scrivi un commento

Commento