一、基礎知識
- JSON
JSON(JavaScript Object Notation, JS 對象簡譜) 是一種輕量級的資料交換格式。它基于 ECMAScript (歐洲計算機協會制定的JS規範)的一個子集,利用javascript中的一些模式來表示結構化的資料。
-
- JSON 文法規則
任何支援的類型都可以通過 JSON 來表示,例如字元串、數字、對象、數組等。但是對象和數組是比較特殊且常用的兩種類型:
對象:對象在 JS 中是使用花括号包裹 {} 起來的内容,資料結構為 {key1:value1, key2:value2, ...} 的鍵值對結構。在面向對象的語言中,key 為對象的屬性,value 為對應的值。鍵名可以使用整數和字元串來表示。值的類型可以是任意類型。
數組:數組在 JS 中是方括号 [] 包裹起來的内容,資料結構為 ["java", "javascript", "vb", ...] 的索引結構。同樣,值的類型可以是任意類型。

-
- 和XML的比較
- 可讀性
JSON和XML的可讀性可謂不相上下,一邊是簡易的文法,一邊是規範的标簽形式,很難分出勝負。
- 可擴充性
XML天生有很好的擴充性,JSON當然也有,沒有什麼是XML可以擴充而JSON卻不能擴充的。不過JSON在Javascript主場作戰,可以存儲Javascript複合對象,有着xml不可比拟的優勢。
- 執行個體比較
XML和JSON都使用結構化方法來标記資料,下面來做一個簡單的比較。
用XML表示中國部分省市資料如下:
用JSON表示如下:
可以看到,JSON 簡單的文法格式和清晰的層次結構明顯要比 XML 容易閱讀,并且在資料交換方面,由于 JSON 所使用的字元要比 XML 少得多,可以大大得節約傳輸資料所占用的帶寬。
- 序列化和反序列化
序列化 (Serialization)是将對象的狀态資訊轉換為可以存儲或傳輸的形式的過程。在序列化期間,對象将其目前狀态寫入到臨時或持久性存儲區。以後,可以通過從存儲區中讀取或反序列化對象的狀态,重新建立該對象。
- JavaScript JSON對象
- JSON對象兩個方法:
-
- JSON.parse()和jQuery.parseJSON()的差別:
有的浏覽器不支援JSON.parse()方法,使用jQuery.parseJSON()方法時,在浏覽器支援時會傳回執行JSON.parse()方法的結果,否則會傳回類似執行eval()方法的結果。eval(): 也是用于将一個 JSON 字元串轉換為 JavaScript 對象
- jQuery序列化表單 serialize() serializeArray()
- serialize()方法
格式:var data = $(“form”).serialize();
功能:将表單内容序列化成一個字元串。
這樣在ajax送出表單資料時,就不用一一列舉出每一個參數。隻需将data參數設定為 $(“form”).serialize() 即可。
-
- serializeArray()方法
格式:var jsonData = $(“form”).serializeArray();
功能:将頁面表單序列化成一個JSON結構的對象。注意不是JSON字元串。
比如,[{“name”:”lihui”, “age”:”20”},{…}] 擷取資料為 jsonData[0].name
- Java中JSON解析
- Java中并沒有内置JSON的解析,是以使用JSON需要借助第三方類庫。
下面是幾個常用的 JSON 解析類庫:
- Gson: 谷歌開發的 JSON 庫,功能十分全面。
- FastJson: 阿裡巴巴開發的 JSON 庫,性能十分優秀。
- Jackson: 社群十分活躍且更新速度很快。
-
- Gson應用執行個體,調用第三方webservice 接口并解析
傳回資料格式
根據資料格式建Java對象RecvHistoryMsg 和 RecvMsgData
調用接口,傳回結果反序列化為對象