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