1. 程式人生 > 實用技巧 >Fastjson處理複雜層級關係的json物件

Fastjson處理複雜層級關係的json物件

處理複雜層級關係的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

得到最終結果