最近在使用json數據,現將這幾天的使用心得整理如下:
一:JSON定義
json (javascript object notation)
(1)json是什麼?
是一種輕量級的數據交換標準。
1)數據交換
將數據轉換成一種與平臺無關的數據格式並傳遞給接收方。
比如:服務器端有一個order對象,要發送給瀏覽器,可以將order對象表示的數據轉換成
一個xml文檔然後發送給瀏覽器,在瀏覽器端,再去解析這個xml文檔就可以獲得order信息
<order>
<name>order001</name>
<price>100</price>
....
</order>
也可以將order對象表示的數據轉換成一個json字符串{'name':'order001','price':100,....}
然後發送給瀏覽器,在瀏覽器端,可以很方便地將這個
json字符串轉換成一個js對象,然後獲得order信息。
2)輕量級
相對於xml作爲數據交換標準,json所需要的文檔大小更小,解析的速度更快。
(2)json的語法 www.json.org
1)表示一個對象
{屬性名稱1:屬性值1,屬性名稱2:屬性值2...}
注意:
a,屬性名稱要用引號(單引號或者雙引號)括起來。
b,屬性值可以是number,string,boolean(true/false),null,object
c,如果屬性值是string,要用引號括起來。
2)表示一個對象組成的數組[{},{},{}...]
(3)使用json編寫ajax應用程序
1) java對象轉換成json字符串。
或者java對象組成的集合轉換成json字符串。
使用json提供的官方的工具JSONObject,JSONArray
2)json字符串轉換成javascript對象
使用一些js框架提供的函數,比如prototype提供的evalJSON函數。
java對象轉換爲js對象 java對象轉換爲JSON對象 JSON對象轉換爲js對象
prototype.js提供了很多有用的函數,比如:
$(id): document.getElementById(id)
$F(id): $(id).value
$(id1,id2,id3....): 分別查找id爲id1,id2,id3...的節點,然後返回一個由這些節點組成的數組。
strip(): 除掉字符串兩端的空格。
evalJSON():將json字符串轉換成相應的js對象或者js對象組成的數組。
二:why要進行json數據交互
json數據格式在html頁面中、接口調用中使用比較多,它的格式比較簡單,解析相對方便。
比如:webservice接口,傳輸json數據。
三:SpringMVC進行json交互
1:客戶端請求發送的數據可分爲兩種:json字符串和key/value數據。
2:json字符串需要指定contentType=application/json
key/value數據contentType=application/x-www-form-urlencoded
如圖:
3:若客戶端請求的是json字符串,@RequestBody可以將json串轉成java對象,@ResponseBody也可以將java對象轉成json串輸出; 若請求的是key/value數據,不需要@RequestBody將json串轉成java對象,@ResponseBody將java對象轉成json串輸出。
如圖:請求json字符串和key/value對比圖
綜述:(1)、請求json、輸出json,要求請求的是json串,所以在前端頁面中需要將請求的內容轉成json,不太方便。
(2)、請求key/value、輸出json。此方法比較常用。
三:加載json轉的jar包
springmvc中使用jackson的包進行json轉換(@requestBody和@responseBody使用下邊的包進行json轉),如圖:
四:配置JSON轉換器
在SpringMVC.xml中的註解適配器中加入messageConverters
注意:如果使用**
<mvc:annotation-driven conversion-service="conversionService"
validator="validator"></mvc:annotation-driven>
**,則不用定義上邊的內容。
五:json交互測試(略)