C 下JSON字串的反序列化
阿新 • • 發佈:2018-11-09
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow
也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!
C#下JSON字串的反序列化,一般都是用newtonsoft.json,比較方便。.net當然也有提供相應功能,但覺得比較複雜。
所謂反序列化,就是將一個包含JSON內容的字串,轉換回指定物件(不一定是轉換回JSON物件)。
方法是:
using Newtonsoft.Json;
。。。
JsonConvert.DeserializeObject<。。。>(strJson)
示例1:
public class ViewTag{ public int ViewId { get; set; } public string Name { get; set; } public bool IsValid { get; set; } public int Seq { get; set; } public byte ChangeType { get; set; }}string strJson = "[{'ViewId':14,'Name':'view 1','IsValid':true,'Seq':'1','ChangeType':0},{'ViewId':15,'Name':'view 2','IsValid':true,'Seq':'2','ChangeType':0}]";List<ViewTag> list = JsonConvert.DeserializeObject<List<ViewTag>>(strJson);
上述例子中,json字串內,每個json元素的資料結構都一樣。但假如不一樣,怎麼辦?
示例2:
string strJson = @"[{ 'id':1, 'text':'All Object', 'iconCls':'', 'children':[{ 'id':11, 'text':'Key attributes', 'children':[{ 'id':111, 'text':'Item1' },{ 'id':112, 'text':'Item2' },{ 'id':113, 'text':'Item3' }] },{ 'id':12, 'text':'Service table 1', 'state':'closed', 'children':[{ 'id':121, 'text':'Service 1' },{ 'id':122, 'text':'Service 2' },{ 'id':123, 'text':'Service 3' }] },{ 'id':13, 'text':'Service table 2', 'state':'closed', 'children':[{ 'id':131, 'text':'Service 1' },{ 'id':132, 'text':'Service 2' },{ 'id':133, 'text':'Service 3' }] },{ 'id':14, 'text':'Service table 3' }]}]"; return JsonConvert.DeserializeObject<List<object>>(strJson);
不管三七二十一,將泛型物件定為 object 即可。