天天看點

GSON解析Json詳解

1、JsonElement:它是一個抽象類,表示某個json元素。這個元素可以是一個JsonObject、JsonArray、JsonPrimitive或JsonNull,這些都是JsonElement這個抽象類的子類。JsonElement運用了Java的多态機制提供一系列的方法來判斷目前的Json對象是否屬于上述子類的一種。

2、JsonPrimitive:它是JsonElement的子類,該類對Java的基本類型及其對應的包裝類進行了封裝,并通過setValue方法為value指派。它可以表示為任意一種Java的基本類型或其對應的包裝類。

3、JsonObject:json對象類,包含了鍵值對,鍵是字元串類型,它的值是一個JsonElement。

4、JsonArray:Json的數組包含一個或多個Json串。JsonArray中用一個集合類List<JsonElement>來添加json數組中的每個元素。

5、JsonNull:null值。

6、JsonParser:Json解析類,将字元串類型或io流對象解析成JsonElement。

7、各個JsonElement的關系可以用如下圖表示:

GSON解析Json詳解
GSON解析Json詳解

8、主要JsonElement轉換代碼:

JsonParser parser = new JsonParser();
InputStreamReader isr = new InputStreamReader(request.getInputStream());
JsonElement jsonEl = parser.parse(isr);
isr.close();
JsonObject jsonObj = jsonEl.getAsJsonObject();
JsonArray ja = jsonObj.get("JsonArray").getAsJsonArray();
JsonObject jo = null;
for (int i = 0; i < ja.size(); i++) {
	JsonElement je = js.get(i);
	jo = je.getAsJsonObject();
}