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的情况下。

 

 

posted @ 2014-04-09 13:57  Scohura  阅读(392)  评论(0编辑  收藏  举报