天天看點

FastJson的使用方法前言一、FastJson是什麼?二、使用步驟

FastJson的使用方法

  • 前言
  • 一、FastJson是什麼?
  • 二、使用步驟
    • 1.引入Pom依賴
    • 2.使用FastJson将對象轉JSON格式
    • 3.使用FastJson将JSON格式轉為對象或集合

前言

關于FastJson大家一定都有了解,那麼對于剛接觸的朋友來說可能有點半懵半懂的感覺,那麼我就來分享一下自己的了解,如果有不對的地方希望大家指出來,共同進步~

一、FastJson是什麼?

Fastjson 是一個 Java 庫,可以将 Java 對象轉換為 JSON 格式,當然它也可以将 JSON 字元串轉換為 Java 對象。

Fastjson 可以操作任何 Java 對象,即使是一些預先存在的沒有源碼的對象。

Fastjson 源碼位址:https://github.com/alibaba/fastjson

Fastjson 中文 Wiki:https://github.com/alibaba/fastjson/wiki/Quick-Start-CN

二、使用步驟

1.引入Pom依賴

代碼如下:

<dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.7</version>
</dependency>
           

2.使用FastJson将對象轉JSON格式

代碼如下:

//對象(可以是任何你能想到的格式,簡單對象,集合,對象集合等)
Object object=new Object();
String json=JSON.toJSONString(object);
           

此時的json就是轉化後的json格式資料,根據object的類型來決定格式,

如果是對象的話,格式為:{“key”:“value”,“key”:“value”},如果為

集合的話,格式為:[Object,Object]。

注意,這裡不管是對象還是集合,對于裡面的值的類型是沒有限制的,也就是對面裡面的value可以放集合也可以放對象,集合裡面可以放集合也可以放對象,但是放集合的話必須要是key:value的鍵值對格式(其實就是對象),例如:[{“list1”:[],“list2”:[]},{“list1”:[],“list2”:[]}]

3.使用FastJson将JSON格式轉為對象或集合

代碼如下:

//這裡我隻介紹我用的比較多的幾種轉化
//1.JSON==>Map
String json = "{\"demo\":\"123\"}";
Map<String,Object> map=JSON.parseObject(json,Map.class);
//2.JSON==>List
String json = "[{\"demo\":\"123\"}]";
List list=JSON.parseObject(json,List.class);
           

注意這裡的第二個參數,很關鍵~~~

這裡的第二個參數在parseObject的時候代表的是将json格式的字元串轉化為

這個參數類型的對象。什麼意思呢,就是如果你寫的是Map.class,那麼這裡就是

将這個json轉成Map對象,如果是List.class,那麼就會轉為List集合對象。

那麼有的小夥伴可能就有疑問了,那這個方法是不是就可以滿足所有需求呢,答案當時不是啦,對于集合而言,FastJson提供了另一個方法供我們使用:

代碼如下:

String json="[1,2,3]";
//注意這裡使用了泛型,大部分時候List肯定是要用泛型的
List<Integer> list=JSON.parseArray(json,Integer.class);
           
這裡大家有沒有發現我使用的是parseArray這個方法,這個方法的第二個參數大家就要注意了,他的含義和parseObject的第二個參數可不一樣。他代表的是集合的泛型的類型。這裡的意思就是将json轉成Integer類型的集合。舉個例子:
String json = "[{\"demo\":\"123\"}]";
//還是這個json,但是這裡使用另一種方式轉化
List<Map<String,Object>> list=JSON.parseArray(json,Map.class);
/*
這裡大家就會發現,上面這個是不行的,發現會提示提供的參數類型與需要的不比對,
需要的是Map<String,Object>,而提供的是Map,那這種情況怎麼辦呢,我們就換一種
方法,用parseObject來解決
*/
List<Map<String,Object>> list=JSON.parseObject(json,List.class);
/*
但是要注意,這個時候是會提示未經檢查的配置設定,将List轉為
List<Map<String,Object>>,這裡可以使用new TypeReference<>(){}來完成泛型
的轉換,示例如下:
*/
List<Map<String,Object>> list= JSON.parseObject(json, new TypeReference<List<Map<String,Object>>>(){});
           

這裡提一下,如果需要在parseObject或者parseArray裡面轉化的時候,第一個參數一定要是json格式的字元串,這裡不建議大家使用手動拼接,建議直接使用JSON.toJSONString(),來轉化,有的時候手動拼接費時費力而且容易出現錯誤,導緻格式不對然後一堆問題,比如給前台資料變為字元串等等,是以大家要注意了~