C#中Json反序列化的实现方法
前言
Json反序列化有两种方式【本人】,一种是生成实体的,方便处理大量数据,复杂度稍高,一种是用匿名类写,方便读取数据,较为简单。
使用了Newtonsoft.Json,可以自行在nuget中导入
Json源数据:
vardata="{'jingdong_ldop_receive_trace_get_responce':{'code':'0','querytrace_result':{'data':[{'opeTitle':'快递签收','opeRemark':'货物已交付京东物流','opeTime':'2011/04/1718:23:20','opeName':'京东快递','waybillCode':'bc00000001'},{'opeTitle':'站点验货','opeRemark':'货物已分配,等待配送','opeTime':'2011/04/2308:29:56','opeName':'京东快递','waybillCode':'bc00000001'},{'opeTitle':'配送员收货','opeRemark':'配送员开始配送,请您准备收货,','opeTime':'2011/04/2308:36:28','opeName':'京东快递','waybillCode':'bc00000001'},{'opeTitle':'妥投','opeRemark':'货物已完成配送,感谢您选择京东物流','opeTime':'2011/04/2309:47:13','opeName':'京东快递','waybillCode':'bc00000001'}],'messsage':'成功','code':100}}}";
第一种:是用匿名方法生成,按照Json的格式,从外到内,一步一步写,非数组用new{},数组用new[]{},名字必须与json中名字一致
//使用匿名变量构造 { varJsonDataForVar=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(variteminJsonDataForVar.jingdong_ldop_receive_trace_get_responce.querytrace_result.data) { vara=item.opeTitle; varb=item.opeRemark; varc=item.opeTime; vard=item.waybillCode; varf=item.opeName; } }
第二种:使用实体
//实体部分,建议从内到外写实体,名字必须与json中名字一致【简便方法,搜索Json转实体,将Json字符串导入,自动生成实体】
publicclassItem { publicstringopeTitle{get;set;} publicstringopeRemark{get;set;} publicstringopeTime{get;set;} publicstringwaybillCode{get;set;} publicstringopeName{get;set;} } publicclassJdResult { publicstringcode{get;set;} publicstringmsg{get;set;} publicList- data{get;set;} } publicclassJdResponce { publicstringcode{get;set;} publicJdResultquerytrace_result{get;set;} } publicclassJdBody { publicJdResponcejingdong_ldop_receive_trace_get_responce{get;set;} }
//方法
//使用实体构造 { varJsonDataForClass=Newtonsoft.Json.JsonConvert.DeserializeAnonymousType(data,newJdBody()); foreach(variteminJsonDataForClass.jingdong_ldop_receive_trace_get_responce.querytrace_result.data) { vara=item.opeTitle; varb=item.opeRemark; varc=item.opeTime; vard=item.waybillCode; varf=item.opeName; } }
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。