是一个二维数组的JSON报文,第一次接触JSON这方面,新人我已经焦头烂额了。
示例的报文内容如下:
{"total": 6,"rows": [{"id":"314","weatherType":"1.0","weatherName":"qing","maxTemperature":"35.0","minTemperature":"23.0","rainFall":"12.0","snowFall":"12.0"},{"id":"315","weatherType":"2.0","weatherName":"yu","maxTemperature":"40.0","minTemperature":"30.0","rainFall":"0.0","snowFall":"0.0"},{"id":"319","weatherType":"3.0","weatherName":"yin","maxTemperature":"20.0","minTemperature":"10.0","rainFall":"0.0","snowFall":"0.0"},{"id":"379","weatherType":"3.0","weatherName":"yin","maxTemperature":"20.0","minTemperature":"10.0","rainFall":"0.0","snowFall":"0.0"},{"id":"672","weatherType":"3.0","weatherName":"yin","maxTemperature":"20.0","minTemperature":"10.0","rainFall":"0.0","snowFall":"0.0"},{"id":"675","weatherType":"3.0","weatherName":"yin","maxTemperature":"20.0","minTemperature":"10.0","rainFall":"0.0","snowFall":"0.0"}]}
我只能做到将第一层反序列化,但是如何将里面的id等反序列化,新人暂时想不到方法。望各位指教~JSON反序列化

解决方案 »

  1.   

    如果你是vs2012,则可以给vs2012 安装一个插件ASP.NET and Web Tools 2012.2安装好这个插件后,就会在web项目出现一个特殊功能“选择性粘贴”将的json字符串直接粘贴为可以被正确序列化对象,有这个对象后,你使用现有了各种json反序列化类都基本可以自动转换过来这玩意的http://blogs.msdn.com/b/webdev/archive/2012/12/18/paste-json-as-classes-in-asp-net-and-web-tools-2012-2-rc.aspxps:当然这是一个简化手段,其实也是一个学习手段,这坛子里这两天很多人都在抱怨着,抱怨那,抱怨微软太自动化了,让他不知道离合器,传动杆是啥子了。我说自动化难道是退步??你真想知道是啥子,难到就不能自己把发动机盖打开看看?同样这个选择性粘贴是个自动化工具,他能简化你做对应转换对象的时间(别TM抱怨说他自动转换了,你就更弄不清楚json和c#对象到底啥关系了,你自己懒到甚至不愿意看一眼转换后的对象和原始json到底是怎么对应滴,还能怪别人把饭做好了,你都不知道怎么淘米的是把)
      

  2.   

    class Program
        {
            [DataContract]
            public class t_experience
            {
                [DataMember(Order = 1)]
                public int total { get; set; }
                [DataMember(Order = 2)]
                public Cchild[] rows { get; set; }
            }
            [DataContract]
            public class Cchild
            {
                [DataMember(Order = 1)]
                public int id { get; set; }
                [DataMember(Order = 2)]
                public string weatherType { get; set; }        }
            public static class JSON
            {
                // 反序列化
                public static T parse<T>(string jsonString)
                {
                    using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)))
                    {
                        return (T)new DataContractJsonSerializer(typeof(T)).ReadObject(ms);
                    }
                }
                //序列化
                public static string stringify(object jsonObject)
                {
                    using (var ms = new MemoryStream())
                    {
                        new DataContractJsonSerializer(jsonObject.GetType()).WriteObject(ms, jsonObject);
                        return Encoding.UTF8.GetString(ms.ToArray());
                    }
                }
            }        static void Main(string[] args)
            {
                Cchild[] clid = new Cchild[] { new Cchild() { id = 1, weatherType = "weatherType0" }, new Cchild() { id = 2, weatherType = "weatherType1" } };            t_experience p1 = new t_experience() { total = clid.Length, rows = clid };            // 序列化            
                var jsonString = JSON.stringify(new t_experience[] { p1 });
                Console.WriteLine(jsonString);
                var vexperience = JSON.parse<t_experience[]>(jsonString);
                Console.WriteLine("解出第一条第一rows weather值为:{0}", vexperience.First().rows.First().weatherType);
                Console.ReadKey();        }    }
    using System.Runtime.Serialization.Json;
    using System.Runtime.Serialization;
      

  3.   

    http://www.soaspx.com/dotnet/asp.net/tech/tech_20120601_9229.html你可以参考参考,希望对你有所帮助 
      

  4.   

    我记得有专门的json处理库,只是不是官方的,
      

  5.   

    我把你的数据格式化了下,哪里看出二维数组的存在了?你解释下?
    {
    total: 6,
    rows: 
    [
    {
    "id": "314",
    "weatherType": "1.0",
    "weatherName": "qing",
    "maxTemperature": "35.0",
    "minTemperature": "23.0",
    "rainFall": "12.0",
    "snowFall": "12.0"
    },
    {
    "id": "315",
    "weatherType": "2.0",
    "weatherName": "yu",
    "maxTemperature": "40.0",
    "minTemperature": "30.0",
    "rainFall": "0.0",
    "snowFall": "0.0"
    },
    {
    "id": "319",
    "weatherType": "3.0",
    "weatherName": "yin",
    "maxTemperature": "20.0",
    "minTemperature": "10.0",
    "rainFall": "0.0",
    "snowFall": "0.0"
    },
    {
    "id": "379",
    "weatherType": "3.0",
    "weatherName": "yin",
    "maxTemperature": "20.0",
    "minTemperature": "10.0",
    "rainFall": "0.0",
    "snowFall": "0.0"
    },
    {
    "id": "672",
    "weatherType": "3.0",
    "weatherName": "yin",
    "maxTemperature": "20.0",
    "minTemperature": "10.0",
    "rainFall": "0.0",
    "snowFall": "0.0"
    },
    {
    "id": "675",
    "weatherType": "3.0",
    "weatherName": "yin",
    "maxTemperature": "20.0",
    "minTemperature": "10.0",
    "rainFall": "0.0",
    "snowFall": "0.0"
    }
    ]
    }
      

  6.   


    谢谢这位大大,我一直在纠结怎么绑定rows里面的数据,受指教了。