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