天天看點

JSON詳解與fastjson的使用

說到JSON相信大家都很熟悉,它是java web開發過程中常用的一種資料互動格式,做開發的同學每天都在和它打交道,但是大家真的對JSON認識的深刻嗎?鄙人不才,在此之前雖然用了好久了但是還真沒靜下心來好好總結一下JSON的使用。最近公司開新項目趁着搭架構的時間,認真的查了一下JSON的相關知識,做個總結分享給大家~

一.JSON介紹

JSON(JavaScript Object Notation, JS 對象簡譜) 是一種輕量級的資料交換格式,采用一種“鍵:值”對的文本格式來存儲和表示資料,在系統交換資料過程中常常被使用,是一種理想的資料交換語言。

二.JSON的形式與文法

JSON基本上分為兩種表現形式,一種是JSON對象,一種是JSON數組。而這兩種形式的結合會衍生出各種各樣的Json字元串。

2.1 JSON對象

形式如下:

{
    "id":1,
    "username":"iterge",
    "password":"123456"
}
           

上面就是一個JSON對象的資料形式,根據上面的資料形式可以總結如下文法:

1:資料在花括号中

2:資料以"鍵:值"對的形式出現(其中鍵多以字元串形式出現,值可取字元串,數值,甚至其他json對象)

3:每兩個"鍵:值"對以逗号分隔(最後一個"鍵:值"對省略逗号)

遵守上面3點,便可以形成一個json對象。

2.2 JSON數組

形式如下:

[
    {"username":"iterge","age":"20"},
    {"username":"itsange","age":"18"},
    {"username":"itsige","age":"16"}
]
           

這就是一個JSON數組的表示形式,得出以下文法:

1:資料在方括号中(可了解為數組)

2:方括号中每個資料以json對象形式出現

3:每兩個資料以逗号分隔(最後一個無需逗号)

遵守上面3點,便可形成一個json對象數組(及一個數組中,存儲了多個json對象)

2.3 兩種基本形式的衍生

了解以上兩種基本形式,接下來就可以衍生出你自己想要的任何形式的JSON格式的資料,如下:

{
    "name":"iterge",
    "brother":[
    {"name":"itsange","age":"18"},
    {"name":"itsige","age":"16"}],
    "address":"Chain"
}
           

2.4 JSON字元串

說到字元串,大家那是再熟悉不過了,java中被""包裹着的資料就是字元串!

是以JSON字元串是什麼呢?當然是被""包裹着的JSON對象或JSON數組或兩者的混合咯,我真是個小機靈鬼呀~

三.fastjson的介紹與使用

3.1 fastjson的簡介與引用

介紹:fastjson是阿裡開發的一款專門用于Java開發的包,可以友善的實作json對象與JavaBean對象的轉換,實作JavaBean對象與json字元串的轉換,實作json對象與json字元串的轉換。除了這個fastjson以外,還有Google開發的Gson包,以及springmvc預設的jackson包,無論哪一種最終實作的結果是一樣,是以在這裡建議一下,都了解是可以的,但一定要有個擅長的。

使用:在spring boot項目中可以直接在pom檔案中引入其坐标,将其添加到項目中,如下

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

3.2 使用

導出jar後可以看到如下圖中所示,包中會有JSON、JSONArray、JSONObject三個類,這三個類也是我們最常用的,也是上面講JSON時與其對應的類。是以,JSONObject代表JSON對象、JSONArray代表JSON數組、JSON代表JSONObject和JSONArray的轉化。

JSON詳解與fastjson的使用

接下來看使用方法:

JSONObject

在idea界面快捷鍵Alt+7會出現如下圖所示的視窗,然後選中JSONObject就可以看到這個類的所有方法了,注意看會發現類中主要是getxx()方法。因為JSONObject相當于json對象,是以該類中主要封裝了各種get方法,通過"鍵:值"對中的鍵來擷取其對應的值。且方法的輸入參數幾乎皆為String類型,這是因為json對象中,"鍵:值"對的鍵都是String類型的。

是以對于JSONObject的操作,将它當成普通對象操作就可以了,利用jsonobject.getxx()方法來擷取自己想要的值。

JSON詳解與fastjson的使用

JSONArray

同樣選中JSONArray類,檢視它所擁有的方法如下圖,JSONArray的方法和list的類似(實際上JSONArray源碼中可以看出它實作了List接口),又因為JSONArray代表JSON數組,是以類中的方法主要用于直接操作json對象。比如這其中的add(),remove(),containsAll()方法,對應于json對象的添加,删除與判斷。

JSON詳解與fastjson的使用

例如其中常用的getJSONObject方法,當輸入參數為索引位置時,可以得到相應的JSONObject對象

public JSONObject getJSONObject(int index) {
     Object value = this.list.get(index);
     return value instanceof JSONObject ? (JSONObject)value : (JSONObject)toJSON(value);
 }
           

JSON

方法如下圖,分析可得JSON類中的方法主要是針對JSONObject和JSONArray的操作。主要是實作json對象,json對象數組,javabean對象,json字元串之間的互相轉化。

JSON詳解與fastjson的使用

下面說幾個常用方法:

1.toJSONString(Object object)方法,實作将對象轉化為json 字元串

2.parseObject(String text)方法,實作json字元串轉換為json對象或javabean對象

3.parseArray(String text)方法,實作json字元串轉化為json對象數組或List<T>

4.toJSON(Object javaObject)方法,實作javabean對象轉化為json對象

5.toJavaObject(JSON json, Class<T> clazz)方法,實作json對象轉化為javabean對象