Gson是一個用于Java對象和JSON字符串之間序列化和反序列化的Java庫。它提供了一種簡單的方法將JSON文本解析成程序可用的Java對象。
在Gson中,我們可以通過反射機制將JSON對象映射到Java中的對象。但是,當JSON對象中包含子類時,我們需要一些特殊的處理方式。下面是一個示例JSON字符串:
{ "name": "Bob", "age": 30, "address": { "street": "Main St", "city": "New York", "state": "NY", "zip": "10001" } }
假設我們需要將上述JSON字符串解析為以下Java對象:
public class Person { private String name; private int age; private Address address; // getters and setters } public class Address { private String street; private String city; private String state; private String zip; // getters and setters }
我們可以使用Gson的TypeToken來解析Address子類:
Gson gson = new Gson(); String json = "{\"name\":\"Bob\",\"age\":30,\"address\":{\"street\":\"Main St\",\"city\":\"New York\",\"state\":\"NY\",\"zip\":\"10001\"}}"; Person person = gson.fromJson(json, Person.class); Type addressType = new TypeToken<Address>(){}.getType(); Address address = gson.fromJson(gson.toJson(person.getAddress()), addressType);
在上面的代碼中,我們首先通過Gson的fromJson方法將JSON字符串解析成Person對象。接著,我們使用TypeToken來獲取Address的類型,然后使用Gson的toJson方法將Address對象轉換成JSON字符串,最后再使用fromJson方法將JSON字符串轉換成Address對象。
通過上述方式,我們就可以成功解析包含子類的JSON字符串了。