1. 程式人生 > >json多層陣列的反序列化

json多層陣列的反序列化

               

繼上篇《json陣列的反序列化》

引言

       已經愛上了json,無法自拔,週末的時候搞一些小研究自然是一件美美噠事情,已迫不及待獻上我的研究成果。

       在前幾篇中,我們的序列化由簡入難。但我們用到的Json序列化的類都一樣。System.Web.Script.Serialization.JavaScriptSerializer類。其實在.NET中有三種常用的JSON序列化的類,其它兩種分別為System.Runtime.Serialization.Json.DataContractJsonSerializer類和Newtonsoft.Json.JsonConvert類。

       以上json多層陣列的反序列化就是用最後一個類來實現的。 接下來將步驟展示給大家。

Newtonsoft.Json.dll的下載


      下載地址:http://download.csdn.net/detail/u013037201/9526944

新增引用

       將其解壓,在vs中新增其引用。

反序列化的json多層陣列

       我們先來展示一個json串     

<span style="font-size:18px;">{""Code"":1,""Message"":[{""merchant_id"":8,""items"":[{""count"":2,""goods_name"":""商品1  漢堡包22222"",""goods_des"":""漢堡包的描述  有什麼好描述的"",""goods_type"":1,""price"":19.80,""remark"":""20元起送"",""send_range"":""周邊一公里"",""goods_id"":2,""create_time"":""2014-11-30 13:24:00""
,""update_time"":""2014-11-30 13:24:00"",""status"":1,""user_name"":""test123""},{""count"":2,""goods_name"":""商品1  漢堡包"",""goods_des"":""漢堡包的描述  有什麼好描述的"",""goods_type"":1,""price"":19.80,""remark"":""20元起送"",""send_range"":""周邊一公里"",""goods_id"":1,""create_time"":""2014-11-30 13:24:43"",""update_time"":""2014-11-30 13:24:43"",""status"":1,""user_name"":""test123""}
]}]}</span>

驗證  

      驗證一下其正確性

   

程式碼

<span style="font-size:18px;">string jsonstr = "{\"Code\":1,\"Message\":[{\"merchant_id\":8,\"items\":[{\"count\":2,\"goods_name\":\"商品1  漢堡包22222\",\"goods_des\":\"漢堡包的描述  有什麼好描述的\",\"goods_type\":1,\"price\":19.80,\"remark\":\"20元起送\",\"send_range\":\"周邊一公里\",\"goods_id\":2,\"create_time\":\"2014-11-30 13:24:00\",\"update_time\":\"2014-11-30 13:24:00\",\"status\":1,\"user_name\":\"test123\"},{\"count\":2,\"goods_name\":\"商品1  漢堡包\",\"goods_des\":\"漢堡包的描述  有什麼好描述的\",\"goods_type\":1,\"price\":19.80,\"remark\":\"20元起送\",\"send_range\":\"周邊一公里\",\"goods_id\":1,\"create_time\":\"2014-11-30 13:24:43\",\"update_time\":\"2014-11-30 13:24:43\",\"status\":1,\"user_name\":\"test123\"}]}]}";            JObject jo = (JObject)JsonConvert.DeserializeObject(jsonstr);            Response.Write(jo["Code"].ToString());            JArray jarry = JArray.Parse(jo["Message"].ToString());            for (var i = 0; i < jarry.Count; i++)            {                JObject j = JObject.Parse(jarry[i].ToString());                Response.Write(j["merchant_id"].ToString());                JArray jarry1 = JArray.Parse(j["items"].ToString());                for (var k = 0; k < jarry1.Count; k++)                {                    JObject jk = JObject.Parse(jarry1[k].ToString());                    Response.Write(jk["goods_name"].ToString());                    Response.Write(jk["remark"].ToString());                }            }</span>

結果

       為了演示方便,我們只將Code,merchant_id,goods_name和remark輸出顯示在介面。



       大家對比一下是不是完全正確呢。


小結

      再深的坑陷進去,也值得。程式設計的學習永無止境!深入的時候,發現它竟然有這麼多的樂趣,大家有興趣的也可以實踐一下哦,專案中一定用的到!

      

           

再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!希望你也加入到我們人工智慧的隊伍中來!http://www.captainbed.net

這裡寫圖片描述