C#JSON序列化与反序列化

原文:C#JSON序列化与反序列化

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字符串为:
C#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。

 

C#JSON序列化与反序列化

上一篇:Unity3D学习笔记(三十四):Shader着色器(1)


下一篇:「必知必会」最细致的 LinkedList 原理分析