反序列化问题
本帖最后由 c_hello_world 于 2013-07-07 21:11:20 编辑 我用下面一段代码对JSON数据进行反序列化:
public MainPage()
{
InitializeComponent();
StreamResourceInfo stream = App.GetResourceStream(new Uri("Resources/heropediadata.json", UriKind.Relative));
StreamReader reader = new StreamReader(stream.Stream);
string content = Regex.Unescape(reader.ReadToEnd());
List<ItemDataModel> itemData = UtilityJsonHelper.JsonString2Obeject<List<ItemDataModel>>(content);
}
http://www.dota2.com/jsfeed/heropediadata?feeds=itemdata
[DataContract]
public class ItemDataModel
{
//物品ID
[DataMember(Name="id")]
public int ItemId { get; set; }
//物品名称
[DataMember(Name = "dname")]
public string ItemName { get; set; }
//物品图片
[DataMember(Name = "img")]
public string ItemPicName { get; set; }
//暂定??
[DataMember(Name = "qual")]
public string ItemComponent { get; set; }
//物品价格
[DataMember(Name = "cost")]
public int ItemCost { get; set; }
//物品描述
[DataMember(Name = "desc")]
public string ItemDesc { get; set; }
//物品属性
[DataMember(Name = "attrib")]
public string ItemAttrib { get; set; }
//物品耗蓝
[DataMember(Name = "mc")]
public string ItemMC { get; set; }
//物品冷却CD
[DataMember(Name = "cd")]
public int ItemCd { get; set; }
//物品传说(背景故事)
[DataMember(Name = "lore")]
public string ItemLore { get; set; }
//合成组建
[DataMember(Name = "components")]
public List<string> ItemComponents { get; set; }
//暂定
[DataMember(Name = "created")]
public bool ItemIsCreated { get; set; }
}
public class UtilityJsonHelper
{
/// <summary>
/// Json字符串转化为Object
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="jsonstring"></param>
/// <returns></returns>
public static T JsonString2Obeject<T>(string jsonstring)
{
using(MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(jsonstring)))
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
return (T)serializer.ReadObject(stream);
}
}
}