将JSON字符串反序列化为指定的.NET对象类型
目录导航:
文章正文:
前言:
关于将JSON字符串反序列化为指定的.NET对象类型数据常见的场景主要是关于网络请求接口,获取到请求成功的响应数据。本篇主要讲的的是如何通过使用Newtonsoft.Json中的JsonConvert.DeserializeObject<T>(string value)方法将对应的JSON字符串转化为指定的.NET对象类型数据。
方法一、在项目中定义对应的对象参数模型,用于映射反序列化出来的参数(复杂JSON字符串数据推荐使用):
如下是一组.NET后台请求接口成功获取到的复杂的JSON字符串数据:

{ "id": "123456", "result": { "data": { "liveToken": "zxcvbnm", "liveStatus": 1, "liveType": 1, "deviceId": "1234567890", "channelId": "0", "coverUpdate": 30, "streams": [{ "hls": "zxcv.safd", "coverUrl": "http://asdaf", "streamId": 0 }], "job": [{ "status": true, "period": "always" }] }, "code": "0", "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": "123456", "code": "0", "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对象类型的更多相关文章
- [K/3Cloud]将JSON字符串反序列化为C#动态对象
using Kingdee.BOS.Util; string errString="{/"Row/":1,/"PageId/":/"1234 ...
- 将JSON反序列化为指定的.NET类型
前言: 关于将JSON格式数据反序列化为指定的.NET类型数据常见的场景就是,关于网络请求获取请求成功的响应数据.本篇主要讲的的是如何通过使用Newtonsoft.Json中的JsonConvert. ...
- C#:Json数据反序列化为Dictionary并根据关键字获取指定的值
转自曾是土木人原文 C#:Json数据反序列化为Dictionary并根据关键字获取指定的值 Json数据: { "dataSet": { "header": ...
- C# Json数据反序列化为Dictionary并根据关键字获取指定值1
Json数据: { "dataSet": { "header": { "returnCode": "0", " ...
- C# Json数据反序列化为Dictionary并根据关键字获取指定值
Json数据: { "dataSet": { "header": { "returnCode": "0", " ...
- 将Dictionary序列化为json数据 、json数据反序列化为Dictionary
需要引用System.Web.Extensions dll类库 /// <summary> /// 将json数据反序列化为Dictionary /// </summary> ...
- nodejs将JSON字符串转化为JSON对象
如何将JSON字符串转化为JSON对象? JSON.parse(str) JSON是javascript的一个内置对象,提供了转换JSON对象与字符串互相转换的方法: 问题来了,道理我都懂 ...
- 类对象序列化为json串,json串反序列化为类对象
1.类对象序列化为json串: 方法一: class P(object): def __init__(self,name,age,sex): self.name=name self.age=age s ...
- Java序列化对象为字符串并将字符串反序列化为对象
对象的序列化与反序列化其实就是将对象的状态保存下来,一般是保存到文件中,但是其实更常用的是将对象序列化为字符串保存到数据库中,然后在需要读取对象的情况下将字符串反序列化为对象. 可以序列化的类必须 ...
随机推荐
- SQL练习02
编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) . +----+--------+| Id | Salary |+----+--------+| 1 | 100 || ...
- k8sDaemonSet控制器
DaemonSet用于再集群中的全部节点上同时运行一份指定的pod资源副本,后续新加入的工作节点也会自动创建一个相关的pod对象,当从集群中移除节点时,此类pod对象也将被自动回收而无须重建.也可以使 ...
- 网络编程之套接字socket
目录 socket套接字 引子 为何学习socket一定要先学习互联网协议 socket是什么 套接字类型 基于文件类型的套接字家族 基于网络类型的套接字家族 套接字工作流程 基于TCP的套接字 简单 ...
- css中".",",",“~”和“>”符号的意义
css中“~” element1~element2 选择器匹配出现在element1后面的element2.element1和element2这两种元素必须具有相同的父元素,但element2不必紧跟 ...
- web前端_css01
CSS 指层叠样式表 (Cascading Style Sheets),样式定义如何显示 HTML 元素,样式通常存储在样式表中,外部样式表通常存储在 CSS 文件中 <!DOCTYPE htm ...
- wx小程序知识点(五)
五.双向绑定和 vue 的区别 ① vue 中实现双向绑定只需要修改 this.data var vm = new Vue({ el: '#example', data: { message: 'He ...
- C# socket 与网页通讯
class Program { static Socket _socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, Pr ...
- BZOJ 1212: [HNOI2004]L语言 trie
长度小于 10 是关键信息~ #include <cstdio> #include <cstring> #include <algorithm> #define N ...
- poj 3320 jessica's Reading PJroblem 尺取法 -map和set的使用
jessica's Reading PJroblem Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9134 Accep ...
- HGOI20190809 省常中互测2
Problem A 时之终结 构造一个含有$n$个节点的无重边无自环的有向图, 使得从$1$出发,每一次经过一条$(u,v) (u < v)$的边到达节点$n$的方案恰好有$y$种. 对于$10 ...