首页 > 代码库 > C#JSON序列化与反序列化

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

 把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://stackoverflow.com/questions/8639421/json-parsing-in-windows-phone-7。

 

C#JSON序列化与反序列化