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的轉化。

接下來看使用方法:

JSONObject

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

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

JSONArray

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

例如其中常用的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字符串之間的相互轉化。

下面說幾個常用方法:

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對象

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章