前言
Json反序列化有兩種方式【本人】,一種是生成實體的,方便處理大量數據,復雜度稍高,一種是用匿名類寫,方便讀取數據,較為簡單。
使用了Newtonsoft.Json,可以自行在nuget中導入
Json源數據:
1
|
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':'站點驗貨','opeRemark':'貨物已分配,等待配送','opeTime':'2011/04/23 08:29:56','opeName':'京東快遞','waybillCode':'bc00000001'},{'opeTitle':'配送員收貨','opeRemark':'配送員開始配送,請您準備收貨,','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}}}" ; |
第一種:是用匿名方法生成,按照Json的格式,從外到內,一步一步寫,非數組用new{},數組用new[]{},名字必須與json中名字一致
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
//使用匿名變量構造 { 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; } } |
第二種:使用實體
//實體部分,建議從內到外寫實體,名字必須與json中名字一致【簡便方法,搜索Json轉實體,將Json字符串導入,自動生成實體】
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
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 ; } } |
//方法
1
2
3
4
5
6
7
8
9
10
11
12
13
|
//使用實體構造 { 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; } } |
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。
原文鏈接:https://www.cnblogs.com/GZNETLGN/p/8930870.html