Json和其序列化和反序列化
最近經常在說Json傳值,Json序列化,什么是Json?什么又是Json的序列化和反序列化?
什么是 JSON ?
大家是否知道Json的全稱?—JavaScript Object Notation(JavaScript 對象表示法),說白了Json就是一種字符串,一種帶有格式的字符串,一種可讀性很強,操作方便的字符串。因為Json字符串存儲信息的方式和hashtable,Dictionary一樣都是鍵值對的形式。
Json的結構很簡單,也很復雜。簡單是因為Json的結構只有兩種:對象和數組。
對象和數組大家都很熟悉,在JS中對象的表示為“{}”括起來的內容,數據結構為 {key:value,key:value,…}的鍵值對的結構,在面向對象的語言中,key為對象的屬性,value為對應的屬性值,所以很容易理解,取值方法為 “對象.key” 獲取屬性值,這個屬性值的類型可以是 數字、字符串、數組、對象幾種。
數組:數組在js中是中括號“[]”括起來的內容,數據結構為 [” 數值1”,”數值2”,”數值3”,…],取值方式和其他語言中一樣,使用索引獲取,字段值的類型和上面對象的屬性值一樣,可以是 數字、字符串、數組、對象幾種。
說Json結構復雜是因為:Json可以通過對象、數組這2種結構的組合,從而形成任何復雜的數據結構。
Json實例:
{ "學生": [ {"姓名":"小明","年齡":23},{"姓名":"大憨","年齡":24}] }上面這個Json對象,包含一個名為學生的數組,數組中的每條記錄又是一個Json對象。對象有兩個屬性分別為:姓名和年齡。這就是一個既包含數組也包含對象的Json實例
說道Json是作為一種存儲和交換文本信息的語法,這使我不得不想到XML。因為XML在這方面也是高手。他們有什么異同呢?
相同之處,他們都是純文本,且有一定的格式都夠保存傳輸數據,可以用JS來對其進行解析。不同之處在于,Json沒有結束標簽,格式相對簡單,能夠使用內建的 JavaScript eval() 方法進行解析。
除了上述之外,JSON和XML還有另外一個很大的區別在于有效數據率。JSON作為數據包格式傳輸的時候具有更高的效率,這是因為JSON不像XML那樣需要有嚴格的閉合標簽,這就讓有效數據量與總數據包比大大提升,從而減少同等數據流量的情況下,網絡的傳輸壓力 。
Json的序列化和反序列化
這里的序列化主要就是為了傳輸方便,將要傳輸的對象序列化為二進制的數據流,效率極高,接收時通過反序列化轉化成對象,從而達到一個傳輸的效果。簡單點來說,序列化就是將對象轉換成Json格式的字符串,反序列化就是逆過程,將Json串轉換成對象。
實例
JS代碼:建立學生對象數組
var stucheck = [ {"姓名":"小明","年齡":23},{"姓名":"大憨","年齡":24}] //用stringify函數將對象stucheck序列化,提交到后臺,增加分享記錄$.ajax({type: "POST",url: "/VideoPlayer/AddVideoShareRecordList",data: { stuList: JSON.stringify(stucheck) },success: function (data) {if (data == true) {alert("分享視頻成功!");} else {alert("分享失敗,請檢查網絡!");}}});后臺解析:
public bool AddStuRecordList(){//獲取Json串string stuList = Request["stuList"];//聲明一個學生的實體集合List<StuRecord> stuAddList = new List<StuRecord>();//聲明一個servializer 類用來完成Json的反序列化JavaScriptSerializer servializer = new JavaScriptSerializer();//完成Json的反序列化stuAddList = servializer.Deserialize<List<StuRecord>>(stuList);bool isok = AddRecordList(stuAddList);return isok;}注意:JS中的對象和后臺中的對象應該保持一致,才能完全轉換。在后臺進行序列化和反序列化需要引入插件,JavaScriptSerializer 或者 Newtonsoft.Json.JsonConvert,添加引用即可。
以上就是對Json的一些簡單了解,不正確的地方請指出。
總結
以上是生活随笔為你收集整理的Json和其序列化和反序列化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 零基础学习人工智能如何入门?
- 下一篇: 童甫带您去了解海航科技集团旗下的小二租车