Gson是一個(gè)用于處理JSON數(shù)據(jù)的Java庫。它能夠?qū)⒁欢蜫SON字符串轉(zhuǎn)換為Java對象,并且能夠?qū)ava對象轉(zhuǎn)換為JSON字符串。
在Gson中,我們可以使用JsonParser來解析一段JSON字符串。JsonParser內(nèi)部使用了一個(gè)Stack來存儲(chǔ)JSON樹的每層節(jié)點(diǎn),每次遇到一個(gè)節(jié)點(diǎn),就會(huì)將該節(jié)點(diǎn)入棧。當(dāng)遇到一個(gè)結(jié)束標(biāo)記時(shí),就會(huì)將該節(jié)點(diǎn)與其子節(jié)點(diǎn)組成的樹形結(jié)構(gòu)彈出棧,將其轉(zhuǎn)換成對應(yīng)的Java對象。
JsonParser parser = new JsonParser(); JsonObject root = parser.parse(jsonString).getAsJsonObject(); MyObject myObject = new Gson().fromJson(root, MyObject.class);
在以上代碼中,我們通過JsonParser的parse方法將JSON字符串解析為JsonObject對象。然后我們可以使用Gson的fromJson方法將JsonObject對象轉(zhuǎn)化成我們所需要的Java對象。其中,第二個(gè)參數(shù)為我們要轉(zhuǎn)換的Java對象的類型。
Gson支持將JSON數(shù)組轉(zhuǎn)換為Java數(shù)組或List,也支持將Java數(shù)組或List轉(zhuǎn)換為JSON數(shù)組。我們可以通過以下代碼實(shí)現(xiàn):
JsonParser parser = new JsonParser(); JsonArray jsonArray = parser.parse(jsonString).getAsJsonArray(); List<MyObject> myObjectList = new Gson().fromJson(jsonArray, new TypeToken<List<MyObject>>(){}.getType());
以上代碼將JSON數(shù)組轉(zhuǎn)換成了List<MyObject>對象。其中,TypeToken的泛型參數(shù)為要轉(zhuǎn)換的List<MyObject>的類型。