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