WP8解析JSON格式(使用DataContractJsonSerializer类)(推荐)

DataContractJsonSerializer是.NET自带的类,在解析JSON格式的时候使用起来方便快捷,至于生成方面由于暂时没用到就没去看了。使用需要引用System.Runtime.Serialization。

在知道需要解析JSON格式的情况下,根据JSON格式构建一个类,而后使用DataContractJsonSerializer读取JSON文本,即完成解析。同时使用JSON格式构建的类,在使用修改时都极为方便。

需要解析的JSON字符串:

{

    "result": {

        "heroes": [

            {

                "name": "npc_dota_hero_antimage",

                "id": 1,

                "localized_name": "敌法师"

            },

            {

                "name": "npc_dota_hero_axe",

                "id": 2,

                "localized_name": "斧王"

            },

            {

                等等

            }

        ]

        ,

        "count": 108

    }

}

代码示例:

Heroes类

    [DataContract]

    class Heroes

    {

        [DataMember]

        public Hero[] heroes { get; set; }

        [DataMember]

        public int count { get; set; }

        [DataMember]

        public String testString { get; set; } //测试

        [DataMember]

        public int testInt { get; set; } //测试



    }

    [DataContract]

    class Hero

    {

         [DataMember] 

        public String name { get; set; }

         [DataMember] 

        public int id { get; set; }

         [DataMember] 

        public String localized_name { get; set; }

    }

解析代码:

            DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Heroes));

            MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(JSON文本));

            Heroes heroes = serializer.ReadObject(ms) as Heroes;

而后可以通过heroes.count,heroes.heroes[].name,heroes.testString来读取对应的信息。由于testString,testInt在需要解析的JSON文本中不存在,因此值分别为null和0,而不是在生成的时候报错。这样就可以用在,可能返回多种格式JSON的情况下。

 

 

你可能感兴趣的:(Serialize)