windows phone学习也有一段时间了,想要做一个新闻客户端练练手,于是就在网上找看有没有接口之类。在天狗播客找到了热点热词新闻资讯API开放接口,接口提供的是JSON格式的数据,由于之前没用过JSON,于是就在网上各种查、技术讨论群上各种问......
废话不多说了,下面把我收获分享出来。望像我一样的小白少走弯路。
一个实体类
public class NewsModel { public string Title { get; set; } public string Times { get; set; } public string Contents { get; set; } }
序列化方法
#region 对实体类进行json序列化 /// <summary> /// 对实体类进行json序列化 /// </summary> /// <param name="item">实体类对象</param> /// <returns>json格式字符串</returns> public static string ToJosnData(object item) { DataContractJsonSerializer serializer = new DataContractJsonSerializer(item.GetType()); string result = string.Empty; using (MemoryStream ms = new MemoryStream()) { serializer.WriteObject(ms, item); ms.Position = 0; using (StreamReader reader = new StreamReader(ms)) { result = reader.ReadToEnd(); } } return result; } #endregion
对实体类进行json序列化
List<NewsModel> ltModel = new List<NewsModel>(); ltModel.Add(new NewsModel { Title = "标题1", Contents = "内容1", Times = "2014-12--2" }); ltModel.Add(new NewsModel { Title = "标题2", Contents = "内容2", Times = "2014-12--2" }); ltModel.Add(new NewsModel { Title = "标题3", Contents = "内容3", Times = "2014-12--2" }); ltModel.Add(new NewsModel { Title = "标题4", Contents = "内容4", Times = "2014-12--2" }); ltModel.Add(new NewsModel { Title = "标题5", Contents = "内容5", Times = "2014-12--2" }); ltModel.Add(new NewsModel { Title = "标题6", Contents = "内容6", Times = "2014-12--2" }); string jsonstr=JsonHelper.ToJosnData(ltModel);
输出JSON字符串为:
把JSON字符串序列为实体对象的方法是使用Newtonsoft.Json.dll,可以在官网下载http://json.codeplex.com/
引入命名空间以后,就很容易了
List<NewsModel> DeModel = new List<NewsModel>(); var root = JsonConvert.DeserializeObject<NewsModel[]>(jsonstr); foreach (var item in root) { DeModel.Add(new NewsModel { Title = item.Title, Contents = item.Contents, Times = item.Times }); }
这样就把JSON字符串反序列化为一个list集合了。
参考:http://*.com/questions/8639421/json-parsing-in-windows-phone-7。