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

这里写图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值