Json和其序列化和還原序列化

來源:互聯網
上載者:User

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 stuAddList = new List();           //聲明一個servializer 類用來完成Json的還原序列化            JavaScriptSerializer servializer = new JavaScriptSerializer();//完成Json的還原序列化            stuAddList = servializer.Deserialize>(stuList);            bool isok = AddRecordList(stuAddList);            return isok;        }

注意:JS中的對象和後台中的對象應該保持一致,才能完全轉換。在後台進行序列化和還原序列化需要引入外掛程式,JavaScriptSerializer 或者 Newtonsoft.Json.JsonConvert,添加引用即可。

以上就是對Json的一些簡單瞭解,不正確的地方請指出。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.