怎么在c#中反序列化Json

  介绍

这篇文章将为大家详细讲解有关怎么在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