使用 Gson 将 JSON 解析为通用类对象

假设我们有一个 JSON 字符串:

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

我们可以将这个 JSON 字符串解析为 String 数组:

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

但是如果我们想将它解析为 List<String> 对象,我们必须使用 TypeToken

这是样本:

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

假设我们有以下两个类:

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

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

我们有一个 JSON 字符串,应该解析为 Outer<Person> 对象。

此示例显示如何将此 JSON 字符串解析为相关的泛型类对象:

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

如果应将 JSON 字符串解析为 Outer<List<Person>> 对象:

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