将JSON反序列化为指定的.NET类型
前言:
关于将JSON字符串反序列化为指定的.NET对象类型数据常见的场景主要是关于网络请求接口,获取到请求成功的响应数据。本篇主要讲的的是如何通过使用Newtonsoft.Json中的JsonConvert.DeserializeObject<T>(string value)方法将对应的JSON字符串转化为指定的.NET对象类型数据。
方法一、在项目中定义对应的对象参数模型,用于映射反序列化出来的参数(复杂JSON字符串数据推荐使用):
如下是一组.NET后台请求接口成功获取到的复杂的JSON字符串数据:
{
"id": "",
"result": {
"data": {
"liveToken": "zxcvbnm",
"liveStatus": ,
"liveType": ,
"deviceId": "",
"channelId": "",
"coverUpdate": ,
"streams": [{
"hls": "zxcv.safd",
"coverUrl": "http://asdaf",
"streamId":
}],
"job": [{
"status": true,
"period": "always"
}]
},
"code": "",
"msg": "操作成功"
}
}
根据该组JSON字符串格式数据定义对应的对象参数模型:
public class BindDeviceLiveHttpsResponse
{
public BindDeviceLiveHttpsResult result { get; set; } public string id { get; set; }
} public class BindDeviceLiveHttpsResult
{
public BindDeviceLiveHttpsData data { get; set; } public string code { get; set; } public string msg { get; set; }
} public class BindDeviceLiveHttpsData
{
public string liveToken { get; set; } public int liveStatus { get; set; } public int liveType { get; set; } public string deviceId { get; set; } public string channelId { get; set; } public int coverUpdate { get; set; } public List<BindDeviceLiveHttpsStreams> streams { get; set; } public List<BindDeviceLiveHttpsJob> job { get; set; } } public class BindDeviceLiveHttpsStreams
{
public string hls { get; set; } public string coverUrl { get; set; } public int streamId { get; set; } } public class BindDeviceLiveHttpsJob
{
public bool status { get; set; } public string period { get; set; }
}
通过JsonConvert.DeserializeObject<自定义模型>(string value)反序列化:
var resultContext = JsonConvert.DeserializeObject<GetLiveStreamInfoResponse>(JSON字符串数据);
//最后我们可以通过对象点属性名称获取到对应的数据
方法二、直接将JSON字符串格式数据反序列化转化为字典数据(简单JSON字符串数据推荐使用):
如下一组简单的JSON字符串格式数据:
{
"id": "",
"code": "",
"msg": "操作成功"
}
通过JsonConvert.DeserializeObject<Dictionary<string, object>>(string value)方法反序列化为字典数据,在通过key访问对应的value的值:
var resultContext=JsonConvert.DeserializeObject<Dictionary<string, object>>(JSON格式数据); //获取msg的值:
var msg=resultContext["msg"]; 输出为:操作成功
将JSON反序列化为指定的.NET类型的更多相关文章
- 将JSON字符串反序列化为指定的.NET对象类型
目录导航: 前言: 方法一.在项目中定义对应的对象参数模型,用于映射反序列化出来的参数(复杂JSON字符串数据推荐使用): 方法二.直接将JSON字符串格式数据反序列化转化为字典数据(简单JSON字符 ...
- 使用 dynamic 标记解析JSON字符串 JDynamic :支持Json反序列化为Dynamic对象
使用 dynamic 标记解析JSON字符串 http://www.cnblogs.com/taotaodetuer/p/4171327.html 1 string jsonStr = " ...
- JDynamic :支持Json反序列化为Dynamic对象
JDynamic :支持Json反序列化为Dynamic对象 2010年 .NET 4.0 发布前后,从3.5向4.0迁移,那时也有一些异构系统的需求,主要是和PHP打交道,通信使用的HTTP 格 ...
- JavaScriptSerializer类 对象序列化为JSON,JSON反序列化为对象
JavaScriptSerializer 类由异步通信层内部使用,用于序列化和反序列化在浏览器和 Web 服务器之间传递的数据.说白了就是能够直接将一个C#对象传送到前台页面成为javascript对 ...
- JavaScriptSerializer类 对象序列化为JSON,JSON反序列化为对象 。
JavaScriptSerializer 类由异步通信层内部使用,用于序列化和反序列化在浏览器和 Web 服务器之间传递的数据.说白了就是能够直接将一个C#对象传送到前台页面成为javascript对 ...
- C# Newtonsoft.Json反序列化为dynamic对象之后的使用
通过Newtonsoft.Json将一个json类型的字符串反序列化为dynamic后直接使用报错 源代码: namespace ConsoleApplication1 { class Program ...
- Json反序列化为动态类型(dynamic)
方法(依赖于Newtonsoft.Json): /// <summary> /// 反序列化json字符串 /// </summary> /// <typeparam n ...
- 如何将后台传来的json反序列化为前端具体对象
//jQuery方式 var obj = $.parseJSON(json); .... //eval var obj = eval("("+json+")" ...
- 复杂JSON反序列化为类对象
有3种常用的反序列化库,gson和fastjson都很棒,json-lib有很大的局限性不推荐使用! 1. net.sf.json(json-lib) 只能用于解析简单的JSON,稍微复杂点的例如,类 ...
随机推荐
- JDBC连接时出现的问题总结
java.sql.SQLException: The server time zone value '�й���ʱ��' is unrecognized or represents more tha ...
- Django-多对多关系的三种创建方式-forms组件使用-cookie与session-08
目录 表模型类多对多关系的三种创建方式 django forms 组件 登录功能手写推理过程 整段代码可以放过来 forms 组件使用 forms 后端定义规则并校验结果 forms 前端渲染标签组件 ...
- SpringBoot起飞系列-日志使用(四)
一.SpringBoot中的日志组件 日志是一个系统中不可缺少的组件.在项目中,我们常用的日志组件有JUL.JCL.Jboss-logging.logback.log4j.log4j2.slf4j.. ...
- jenkins自动化部署项目8 -- 新建job(服务代码部署在linux上)
jenkins(windows) ----> 应用服务器(linux): 1.后台java服务: 与部署在windows上不同的是,这里我选择了在[构建后操作]中使用ssh向远程linux服务器 ...
- 关于json字符串与实体之间的严格验证
在一个项目中要求严格验证传入的json字符串与定义的 类匹配,否则不记录.感觉这个严格验证找了好多资料才找到,可能用的人比较少,特摘出来给大家分析,直接上代码了: using Newtonsoft ...
- 关于react-router最新版本的使用
现在react-router已经更新到了5.1.1版本,在一些使用方法上较之前有了很多改变,现做初步列举,以后会陆续更新. 关于引入react-router和基本使用 旧版本中引入react-rout ...
- python-电脑结构、网络基础、单位转换
目录 一.计算机五大部件 二.程序运行的过程 三.ARP协议 四.单位转换 一.计算机五大部件 电脑之父——冯·诺伊曼提出了计算机的五大部件:输入设备.输出设备.存储器.运算器和控制器. 我们把键盘和 ...
- Basic Example using SMTP (for PHPMailer v5.0.0 and up)
sample as below: require_once('../class.phpmailer.php'); //include("class.smtp.php"); // o ...
- Java 爬虫遇到需要登录的网站,该怎么办?
这是 Java 网络爬虫系列博文的第二篇,在上一篇 Java 网络爬虫,就是这么的简单 中,我们简单的学习了一下如何利用 Java 进行网络爬虫.在这一篇中我们将简单的聊一聊在网络爬虫时,遇到需要登录 ...
- Java9以后的垃圾回收
1: finalize() 方法 finallize() 方法是Object类的方法, 用于在类被GC回收时 做一些处理操作, 但是JVM并不能保证finalize(0 ) 方法一定被执行, 由于fi ...