Fastjson處理複雜層級關係的json物件
阿新 • • 發佈:2020-10-29
處理複雜層級關係的json物件
我們一般的專案現在都是前後端分離,從前端傳過來的都是序列化好的json資料,但是我們後臺如何獲取呢,那就不獲取了唄~,上代?
用到了阿里的Fastjson來處理
匯入pom檔案
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.49</version>
</dependency>
- 1
- 2
- 3
- 4
- 5
直接開用,如何轉化json的字串呢?
JSONObject jsonObject = JSON.parseObject(result)
- 1
- 其中result就是json的字串,轉化為jsonObject
轉化成功就如上圖所示,變成了一個jsonObject的物件
層級複雜怎麼辦,多半是裝的,打一頓就好了
看到這種讓人頭疼的層級關係特別複雜的json怎麼辦?幹就完事了
先看程式碼
JSONArray jsonArray=jsonObject.getJSONObject("data").getJSONArray("fileList").getJSONObject(0).getJSONArray("labels");
- 1
我這裡最終想獲取一個labels的陣列,我怎麼把它提取出來呢,看上面程式碼
- 由於我要獲取一個數組,我用JSONArray型別的
- jsonObject是之前已經轉化好的json字串
- 它的第一層名是data並不是陣列,那我們先加上一句getJSONObject(“data”)
- 第二層名是fileList提示我們是一個數組,裡面包含了一個名為0的陣列元素,所以我們加上getJSONArray(“fileList”)
- 第三層名為0,不是陣列,但是是上一層的陣列元素,加上getJSONObject(0)表示獲取第一個元素
- 第四層我們要進入labels裡面,是個陣列加上getJSONArray(“labels”)
- 最終我們完成了取出元素
取出來就是這個樣子的
由於都是數字,我們將它轉化為list
List list = new ArrayList<>();
for(Object jstr:jsonArray){
list.add(jstr);
}
- 1
- 2
- 3
- 4
輸出它的第一個list的值
System.out.println(list.get(0));
- 1
得到最終結果