Gson是Google出品的一個(gè)用于Java和Android的Json解析庫(kù)。使用Gson可以輕松地將Json數(shù)據(jù)解析成Java對(duì)象,也可以將Java對(duì)象轉(zhuǎn)換成Json格式。在解析Json數(shù)據(jù)時(shí),常常會(huì)遇到多層嵌套的情況,例如包含Map類(lèi)型的Json數(shù)據(jù)。下面我們來(lái)看一下如何使用Gson解析多層Json數(shù)據(jù)。
首先,我們需要先定義一個(gè)Java類(lèi),用來(lái)表示Json數(shù)據(jù)中的一個(gè)鍵值對(duì)。這個(gè)類(lèi)需要繼承自HashMap類(lèi)型,這樣才能保存多個(gè)鍵值對(duì)。
public class JsonMap extends HashMap{
}
接下來(lái),我們需要使用Gson解析Json數(shù)據(jù)。Gson提供了fromJson()方法用來(lái)將Json數(shù)據(jù)解析成Java對(duì)象。由于我們需要解析出來(lái)的是一個(gè)Map類(lèi)型,所以使用TypeToken來(lái)表示數(shù)據(jù)類(lèi)型。
String json = "{ \"name\": \"Tom\", \"address\": { \"province\": \"Guangdong\", \"city\": \"Shenzhen\" } }";
Gson gson = new Gson();
JsonMap map = gson.fromJson(json, new TypeToken<JsonMap>() {}.getType());
解析結(jié)果如下:
{"name":"Tom","address":{"province":"Guangdong","city":"Shenzhen"}}
可以看到,解析結(jié)果中包含了一個(gè)Map類(lèi)型的鍵值對(duì),其中address鍵對(duì)應(yīng)的值也是一個(gè)Map類(lèi)型。
如果需要訪問(wèn)Map類(lèi)型的鍵值對(duì),可以使用Map的get()方法。例如,獲取地址信息中的省份:
String province = (String) map.get("address").get("province");
這樣就能夠輕松地獲取到嵌套Json數(shù)據(jù)中的信息了。