標籤:des style blog http io ar color os 使用
原文: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序列化與還原序列化