Android Analyse JSON avec Gson


Exemple

L'exemple montre l'analyse d'un objet JSON à l'aide de la bibliothèque Gson de Google .

Objets d'analyse:

class Robot {
    //OPTIONAL - this annotation allows for the key to be different from the field name, and can be omitted if key and field name are same . Also this is good coding practice as it decouple your variable names with server keys name 
    @SerializedName("version") 
    private String version;

    @SerializedName("age")
    private int age;
    
    @SerializedName("robotName")
    private String name;
    
    // optional : Benefit it allows to set default values and retain them, even if key is missing from Json response. Not required for primitive data types. 

    public Robot{
       version = "";
       name = "";
    }


}

Ensuite, lorsque l'analyse doit avoir lieu, utilisez les éléments suivants:

String robotJson = "{
                        \"version\": \"JellyBean\",
                        \"age\": 3,
                        \"robotName\": \"Droid\"
                   }";

Gson gson = new Gson();
Robot robot = gson.fromJson(robotJson, Robot.class);

Analyse d'une liste:

Lors de la récupération d'une liste d'objets JSON, vous souhaiterez souvent les analyser et les convertir en objets Java.

La chaîne JSON que nous allons essayer de convertir est la suivante:

{
  "owned_dogs": [
    {
      "name": "Ron",
      "age": 12,
      "breed": "terrier"
    },
    {
      "name": "Bob",
      "age": 4,
      "breed": "bulldog"
    },
    {
      "name": "Johny",
      "age": 3,
      "breed": "golden retriever"
    }
  ]
}

Ce tableau JSON particulier contient trois objets. Dans notre code Java, nous souhaitons mapper ces objets aux objets Dog . Un objet Chien ressemblerait à ceci:

private class Dog {
    public String name;
    public int age;

    @SerializedName("breed")
    public String breedName;
}

Pour convertir le tableau JSON en un Dog[] :

Dog[] arrayOfDogs = gson.fromJson(jsonArrayString, Dog[].class);

Conversion d'un Dog[] en chaîne JSON:

String jsonArray = gson.toJson(arrayOfDogs, Dog[].class);

Pour convertir le tableau JSON en ArrayList<Dog> nous pouvons procéder comme suit:

Type typeListOfDogs = new TypeToken<List<Dog>>(){}.getType();
List<Dog> listOfDogs = gson.fromJson(jsonArrayString, typeListOfDogs);

L'objet Type typeListOfDogs définit à quoi ressemblerait une liste d'objets Dog . GSON peut utiliser cet objet de type pour mapper le tableau JSON sur les bonnes valeurs.

Vous pouvez également convertir un List<Dog> en un tableau JSON de la même manière.

String jsonArray = gson.toJson(listOfDogs, typeListOfDogs);