介绍
这篇文章将为大家详细讲解有关怎么在c#中反序列化Json,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
<强> Json源数据:强>
, var data =,“{& # 39; jingdong_ldop_receive_trace_get_responce& # 39;:{& # 39;代码# 39;:& # 39;0 & # 39;,& # 39;querytrace_result& # 39;:{& # 39;数据# 39;:[{& # 39;opeTitle& # 39;: & # 39;快递签收& # 39;,& # 39;opeRemark& # 39;: & # 39;货物已交付京东物流& # 39;,& # 39;opeTime& # 39;: & # 39; 2011/04/17 18:23:20& # 39;, & # 39; opeName& # 39;: & # 39;京东快递& # 39;,& # 39;waybillCode& # 39;: & # 39; bc00000001& # 39;}, {& # 39; opeTitle& # 39;: & # 39;站点验货& # 39;,& # 39;opeRemark& # 39;: & # 39;货物已分配,等待配送& # 39;,& # 39;opeTime& # 39;: & # 39; 2011/04/23 08:29:56& # 39;, & # 39; opeName& # 39;: & # 39;京东快递& # 39;,& # 39;waybillCode& # 39;: & # 39; bc00000001& # 39;}, {& # 39; opeTitle& # 39;: & # 39;配送员收货& # 39;,& # 39;opeRemark& # 39;: & # 39;配送员开始配送,请您准备收的货,& # 39;,& # 39;opeTime& # 39;: & # 39; 2011/04/23 08:36:28& # 39;, & # 39; opeName& # 39;: & # 39;京东快递& # 39;,& # 39;waybillCode& # 39;: & # 39; bc00000001& # 39;}, {& # 39; opeTitle& # 39;: & # 39;妥投& # 39;,& # 39;opeRemark& # 39;: & # 39;货物已完成配送,感谢您选择京东物流& # 39;,& # 39;opeTime& # 39;: & # 39; 2011/04/23 09:47:13& # 39;, & # 39; opeName& # 39;: & # 39;京东快递& # 39;,& # 39;waybillCode& # 39;: & # 39; bc00000001& # 39;}], & # 39;消息# 39;:& # 39;成功& # 39;,& # 39;代码# 39;:100}}}“;
第一种:是用匿名方法生成,按照Json的格式,从外到内,一步一步写,非数组用{},数组用新的[]{},名字必须与Json中名字一致
//使用匿名变量构造 ,,{ ,,,var JsonDataForVar =, Newtonsoft.Json.JsonConvert.DeserializeAnonymousType(数据,新 ,,,{ ,,,jingdong_ldop_receive_trace_get_responce =,新的 ,,,,{ ,,,,,code =, string.Empty, ,,,,,querytrace_result =新 ,,,,,{ ,,,,,,data =,新的[],{ ,,,,,,new { ,,,,,,,,opeTitle=string.Empty, ,,,,,,,,opeRemark=string.Empty, ,,,,,,,,opeTime=string.Empty, ,,,,,,,,waybillCode=string.Empty, ,,,,,,,,opeName=string.Empty ,,,,,,} ,,,,,} ,,,,,} ,,,,} ,,,}); ,,,foreach (var item  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字符串导入,自动生成实体】
public class 项目 {才能 ,,public string  opeTitle {组,得到,,,} ,,public string  opeRemark {组,得到,,,} ,,public string  opeTime{组,得到,,,} ,,public string  waybillCode {组,得到,,,} ,,public string  opeName {组,得到,,,} ,,} public 才能;class  JdResult {才能 ,,public string  code {组,得到,,,} ,,public string  msg {组,得到,,,} ,,public List< Item>, data {组,得到,,,} ,,} public 才能;class  JdResponce {才能 ,,public string  code {组,得到,,,} ,,public JdResult  querytrace_result {组,得到,,,} ,,} public 才能;class  JdBody {才能 ,,public JdResponce  jingdong_ldop_receive_trace_get_responce {组,得到,,,} 以前,,}>//方法
//使用实体构造 ,,{ ,,,var JsonDataForClass =, Newtonsoft.Json.JsonConvert.DeserializeAnonymousType(数据,new JdBody ()); ,,,foreach (var item  JsonDataForClass.jingdong_ldop_receive_trace_get_responce.querytrace_result.data拷贝) ,,,{ ,,,,var a =, item.opeTitle; ,,,,var b =, item.opeRemark; ,,,,var c =, item.opeTime; null null null null怎么在c#中反序列化Json