欢迎来到入门教程网!

C#教程

当前位置:主页 > 软件编程 > C#教程 >

C#中Json反序列化的实现方法

来源:本站原创|时间:2020-01-10|栏目:C#教程|点击:

前言

Json反序列化有两种方式【本人】,一种是生成实体的,方便处理大量数据,复杂度稍高,一种是用匿名类写,方便读取数据,较为简单。

使用了Newtonsoft.Json,可以自行在nuget中导入

Json源数据:

 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中名字一致

//使用匿名变量构造
   {
    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字符串导入,自动生成实体】

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; }
  }

//方法

//使用实体构造
   {
    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;
    }
   }

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

上一篇:C#实体对象序列化成Json并让字段的首字母小写的两种解决方法

栏    目:C#教程

下一篇:WPF利用RPC调用其他进程的方法详解

本文标题:C#中Json反序列化的实现方法

本文地址:https://www.xiuzhanwang.com/a1/C_jiaocheng/5158.html

网页制作CMS教程网络编程软件编程脚本语言数据库服务器

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:835971066 | 邮箱:835971066#qq.com(#换成@)

Copyright © 2002-2020 脚本教程网 版权所有