前言
Json反序列化有兩種方式【本人】,一種是生成實(shí)體的,方便處理大量數(shù)據(jù),復(fù)雜度稍高,一種是用匿名類寫,方便讀取數(shù)據(jù),較為簡(jiǎn)單。
使用了Newtonsoft.Json,可以自行在nuget中導(dǎo)入
Json源數(shù)據(jù):
var data = "{'jingdong_ldop_receive_trace_get_responce':{'code':'0','querytrace_result':{'data':[{'opeTitle':'快遞簽收','opeRemark':'貨物已交付京東物流','opeTime':'2011/04/17 18:23:20','opeName':'京東快遞','waybillCode':'bc00000001'},{'opeTitle':'站點(diǎn)驗(yàn)貨','opeRemark':'貨物已分配,等待配送','opeTime':'2011/04/23 08:29:56','opeName':'京東快遞','waybillCode':'bc00000001'},{'opeTitle':'配送員收貨','opeRemark':'配送員開始配送,請(qǐng)您準(zhǔn)備收貨,','opeTime':'2011/04/23 08:36:28','opeName':'京東快遞','waybillCode':'bc00000001'},{'opeTitle':'妥投','opeRemark':'貨物已完成配送,感謝您選擇京東物流','opeTime':'2011/04/23 09:47:13','opeName':'京東快遞','waybillCode':'bc00000001'}],'messsage':'成功','code':100}}}";
第一種:是用匿名方法生成,按照J(rèn)son的格式,從外到內(nèi),一步一步寫,非數(shù)組用new{},數(shù)組用new[]{},名字必須與json中名字一致
//使用匿名變量構(gòu)造 { var JsonDataForVar = Newtonsoft.Json.JsonConvert.DeserializeAnonymousType(data, new { jingdong_ldop_receive_trace_get_responce = new { code = string.Empty, querytrace_result = new { data = new[] { new { opeTitle=string.Empty, opeRemark=string.Empty, opeTime=string.Empty, waybillCode=string.Empty, opeName=string.Empty } } } } }); foreach (var item in JsonDataForVar.jingdong_ldop_receive_trace_get_responce.querytrace_result.data) { var a = item.opeTitle; var b = item.opeRemark; var c = item.opeTime; var d = item.waybillCode; var f = item.opeName; } }
第二種:使用實(shí)體
//實(shí)體部分,建議從內(nèi)到外寫實(shí)體,名字必須與json中名字一致【簡(jiǎn)便方法,搜索Json轉(zhuǎn)實(shí)體,將Json字符串導(dǎo)入,自動(dòng)生成實(shí)體】
public class Item { public string opeTitle { get; set; } public string opeRemark { get; set; } public string opeTime{ get; set; } public string waybillCode { get; set; } public string opeName { get; set; } } public class JdResult { public string code { get; set; } public string msg { get; set; } public List<Item> data { get; set; } } public class JdResponce { public string code { get; set; } public JdResult querytrace_result { get; set; } } public class JdBody { public JdResponce jingdong_ldop_receive_trace_get_responce { get; set; } }
//方法
//使用實(shí)體構(gòu)造 { var JsonDataForClass = Newtonsoft.Json.JsonConvert.DeserializeAnonymousType(data, new JdBody()); foreach (var item in JsonDataForClass.jingdong_ldop_receive_trace_get_responce.querytrace_result.data) { var a = item.opeTitle; var b = item.opeRemark; var c = item.opeTime; var d = item.waybillCode; var f = item.opeName; } }
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)VEVB武林網(wǎng)的支持。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注