C#中Json反序列化的实现方法
作者:刘Te 发布时间:2022-07-16 04:34:19
标签:C#,json,反序列化
前言
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;
}
}
来源:https://www.cnblogs.com/GZNETLGN/p/8930870.html


猜你喜欢
- 本文实例讲述了C#格式化json字符串的方法。分享给大家供大家参考,具体如下:将Json字符串转化成格式化表示的方法: 字符串反序列化为对象
- 本文实例为大家分享了java用户注册功能,供大家参考,具体内容如下主页面: 浏览器显示:代码实现:<%@ page language=
- Commons Beanutils是Apache开源组
- 使用AES算法可用于对数据进行加密码与解密,使用的时候需要注意两点:1)被加密的串越长,加密后的字符串越长,注意数据库字段的设计;2)Lin
- 输入一个数组,然后颠倒次序进行输出,这种算法在程序开发
- 一、项目简述(+需求文档+PPT)功能:卡管理,卡消费,卡充值,图书借阅,消费,记录,注销等等功能。二、项目运行环境配置:Jdk1.8 +
- 1、心跳机制简介在分布式系统中,分布在不同主机上的节点需要检测其他节点的状态,如服务器节点需要检测从节点是否失效。为了检测对方节点的有效性,
- 最近在调试程序,想把过程中需要查看的数据输出到文件中,因此将简单的小方法分享一下1.首先需要声明一个文件指针变量FILE* fp;2.接下来
- 本文介绍了Android轻松实现多语言的方法示例,分享给大家,具体如下:1.创建多语言包2.首先在onCreate方法中调用此方法查看上一次
- 再使用整型转string的时候感觉有点棘手,因为itoa不是标准C里面的,而且即便是有itoa,其他类型转string不是很方便。后来去网上
- 堆排序介绍:堆排序可以分为两个阶段。在堆的构造阶段,我们将原始数组重新组织安排进一个堆中;然后在下沉排序阶段,我们从堆中按顺序取出所有元素并
- 端口设置和contextpath的配置端口设置Spring boot 默认端口是8080,如果想要进行更改的话,只需要修改applicato
- OpenFeign介绍一开始,我们使用原生的 DiscoveryClient 发现服务和使用RestTemplate进行服务间调用,然后我们
- 本文实例讲述了Android编程单选项框RadioGroup用法。分享给大家供大家参考,具体如下:今天介绍的是RadioGroup 的组事件
- 二叉堆什么是二叉堆二叉堆本质上是一种完全二叉树,它分为两个类型最大堆:最大堆的任何一个父节点的值,都大于等于它的左、右孩子节点的值(堆顶就是
- 本文实例讲述了C# Console利用mspaint打开图像并保存的方法。分享给大家供大家参考,具体如下:调用画图板压缩图片System.D
- 1. Text日常最常用的应该就是显示文字,所以有必要说一下Text控件。首先源码如下:@Composablefun Text(  
- 环境: idea2020.1插件: LeetCode-editor 6.7一、IDEA安装LeetCode插件安装完成重启idea打开插件U
- 一、Shiro整体概述1.简介Apache Shiro是Java的一个安全框架,功能强大,使用简单,Shiro为开发人员提供了一个直观而全面
- 在C#程序开发过程中,很多时候可能需要将字符串根据特定的分割字符分割成字符或者List集合,例如根据逗号将字符串分割为数组,或者根据竖线将字