Android Analyse JSON en objet de classe générique avec Gson


Exemple

Supposons que nous ayons une chaîne JSON:

["first","second","third"]

Nous pouvons analyser cette chaîne JSON dans un tableau String :

Gson gson = new Gson();
String jsonArray = "[\"first\",\"second\",\"third\"]";
String[] strings = gson.fromJson(jsonArray, String[].class);

Mais si nous voulons l'analyser dans un objet List<String> , nous devons utiliser TypeToken .

Voici l'échantillon:

Gson gson = new Gson();
String jsonArray = "[\"first\",\"second\",\"third\"]";
List<String> stringList = gson.fromJson(jsonArray, new TypeToken<List<String>>() {}.getType());

Supposons que nous avons deux classes ci-dessous:

public class Outer<T> {
    public int index;
    public T data;
}

public class Person {
    public String firstName;
    public String lastName;
}

et nous avons une chaîne JSON qui doit être analysée dans un objet Outer<Person> .

Cet exemple montre comment analyser cette chaîne JSON avec l'objet de classe générique associé:

String json = "......";
Type userType = new TypeToken<Outer<Person>>(){}.getType();
Result<User> userResult = gson.fromJson(json,userType);

Si la chaîne JSON doit être analysée dans un objet Outer<List<Person>> :

Type userListType = new TypeToken<Outer<List<Person>>>(){}.getType();
Result<List<User>> userListResult = gson.fromJson(json,userListType);