文章正文:

前言:

  关于将JSON字符串反序列化为指定的.NET对象类型数据常见的场景主要是关于网络请求接口,获取到请求成功的响应数据。本篇主要讲的的是如何通过使用Newtonsoft.Json中的JsonConvert.DeserializeObject<T>(string value)方法将对应的JSON字符串转化为指定的.NET对象类型数据。

方法一、在项目中定义对应的对象参数模型,用于映射反序列化出来的参数(复杂JSON字符串数据推荐使用):

如下是一组.NET后台请求接口成功获取到的复杂的JSON字符串数据:

  1. {
  2. "id": "123456",
  3. "result": {
  4. "data": {
  5. "liveToken": "zxcvbnm",
  6. "liveStatus": 1,
  7. "liveType": 1,
  8. "deviceId": "1234567890",
  9. "channelId": "0",
  10. "coverUpdate": 30,
  11. "streams": [{
  12. "hls": "zxcv.safd",
  13. "coverUrl": "http://asdaf",
  14. "streamId": 0
  15. }],
  16. "job": [{
  17. "status": true,
  18. "period": "always"
  19. }]
  20. },
  21. "code": "0",
  22. "msg": "操作成功"
  23. }
  24. }

根据该组JSON字符串格式数据定义对应的对象参数模型:

  1. public class BindDeviceLiveHttpsResponse
  2. {
  3. public BindDeviceLiveHttpsResult result { get; set; }
  4.  
  5. public string id { get; set; }
  6. }
  7.  
  8. public class BindDeviceLiveHttpsResult
  9. {
  10. public BindDeviceLiveHttpsData data { get; set; }
  11.  
  12. public string code { get; set; }
  13.  
  14. public string msg { get; set; }
  15. }
  16.  
  17. public class BindDeviceLiveHttpsData
  18. {
  19. public string liveToken { get; set; }
  20.  
  21. public int liveStatus { get; set; }
  22.  
  23. public int liveType { get; set; }
  24.  
  25. public string deviceId { get; set; }
  26.  
  27. public string channelId { get; set; }
  28.  
  29. public int coverUpdate { get; set; }
  30.  
  31. public List<BindDeviceLiveHttpsStreams> streams { get; set; }
  32.  
  33. public List<BindDeviceLiveHttpsJob> job { get; set; }
  34.  
  35. }
  36.  
  37. public class BindDeviceLiveHttpsStreams
  38. {
  39. public string hls { get; set; }
  40.  
  41. public string coverUrl { get; set; }
  42.  
  43. public int streamId { get; set; }
  44.  
  45. }
  46.  
  47. public class BindDeviceLiveHttpsJob
  48. {
  49. public bool status { get; set; }
  50.  
  51. public string period { get; set; }
  52. }

通过JsonConvert.DeserializeObject<自定义模型>(string value)反序列化:

  1. var resultContext = JsonConvert.DeserializeObject<GetLiveStreamInfoResponse>(JSON字符串数据);//最后我们可以通过对象点属性名称获取到对应的数据

方法二、直接将JSON字符串格式数据反序列化转化为字典数据(简单JSON字符串数据推荐使用):

如下一组简单的JSON字符串格式数据:

  1. {
  2. "id": "123456",
  3. "code": "0",
  4. "msg": "操作成功"
  5. }

通过JsonConvert.DeserializeObject<Dictionary<string, object>>(string value)方法反序列化为字典数据,在通过key访问对应的value的值:

  1. var resultContext=JsonConvert.DeserializeObject<Dictionary<string, object>>(JSON格式数据);
  2.  
  3. //获取msg的值:
  4. var msg=resultContext["msg"];
  5.  
  6. 输出为:操作成功

将JSON字符串反序列化为指定的.NET对象类型的更多相关文章

  1. [K/3Cloud]将JSON字符串反序列化为C#动态对象

    using Kingdee.BOS.Util; string errString="{/"Row/":1,/"PageId/":/"1234 ...

  2. 将JSON反序列化为指定的.NET类型

    前言: 关于将JSON格式数据反序列化为指定的.NET类型数据常见的场景就是,关于网络请求获取请求成功的响应数据.本篇主要讲的的是如何通过使用Newtonsoft.Json中的JsonConvert. ...

  3. C#:Json数据反序列化为Dictionary并根据关键字获取指定的值

    转自曾是土木人原文 C#:Json数据反序列化为Dictionary并根据关键字获取指定的值 Json数据: { "dataSet": { "header": ...

  4. C# Json数据反序列化为Dictionary并根据关键字获取指定值1

    Json数据: { "dataSet": { "header": { "returnCode": "0", " ...

  5. C# Json数据反序列化为Dictionary并根据关键字获取指定值

    Json数据: { "dataSet": { "header": { "returnCode": "0", " ...

  6. 将Dictionary序列化为json数据 、json数据反序列化为Dictionary

    需要引用System.Web.Extensions  dll类库 /// <summary> /// 将json数据反序列化为Dictionary /// </summary> ...

  7. nodejs将JSON字符串转化为JSON对象

    如何将JSON字符串转化为JSON对象? JSON.parse(str)       JSON是javascript的一个内置对象,提供了转换JSON对象与字符串互相转换的方法: 问题来了,道理我都懂 ...

  8. 类对象序列化为json串,json串反序列化为类对象

    1.类对象序列化为json串: 方法一: class P(object): def __init__(self,name,age,sex): self.name=name self.age=age s ...

  9. Java序列化对象为字符串并将字符串反序列化为对象

    对象的序列化与反序列化其实就是将对象的状态保存下来,一般是保存到文件中,但是其实更常用的是将对象序列化为字符串保存到数据库中,然后在需要读取对象的情况下将字符串反序列化为对象.   可以序列化的类必须 ...

随机推荐

  1. zencart模板列表下载地址

    下载index.html文件后用浏览器打开,里面有一百多个zencart模板示例 下载地址:zencart模板示例下载地址 或者复制下面网址,用浏览器打开即可下载: http://bcs.duapp. ...

  2. libusb读写

    https://blog.csdn.net/u012247418/article/details/83684980 https://github.com/crazybaoli/libusb-test ...

  3. C#基础再学习

    本次观看C#中级教程视频进行对C#一些基础的再度学习,加深印象. 1.对于错误和异常. 错误可能是语法错误也可能是逻辑错误.可以通过断点进行调试. 断点快捷键F9. 异常,通过try catch捕获, ...

  4. Mongodb的mapreduce

    简单的看了一下mapreduce,我尝试不看详细的api去做一个group效果,结果遇到了很多问题,罗列在这里,如果别人也遇到了类似的bug,可以检索到结果. //先看person表的数据 > ...

  5. keystonejs实战之页头页脚

    前两篇介绍了入门相关知识及对keystonejs整体可用性评估,这篇介绍下开始实际运用中的页头页脚部分,因为马上项目忙了,这个先匆匆的作个收尾. 不管是用WordPress还是其他CMS系统,应用最宽 ...

  6. 微信小程序没找到构建npm或者没找到node_modules目录以及如何在小程序中引入vant weapp组件

    微信小程序没找到构建npm或者没找到node_modules目录解决方法如下: 按照微信小程序提供的文档npm install是不行的,直接提示没找到可构建的npm包. 1.直接安装:npm init ...

  7. 51 Nod 不一样的猜字游戏

    1536 不一样的猜数游戏  题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 瓦斯亚和皮台亚在玩一个简单的游戏.瓦 ...

  8. HGOI20190808 省常中互测1

    Problem A  sum 给出$n$个元素的序列$\{a_i\}$,求出两个不相交连续子序列的最大元素和. 即对于$1 \leq A \leq B \leq C \leq D \leq n$最大化 ...

  9. 分享几个免费IP地址查询接口(API)

    淘宝IP地址库 提供的服务包括:1. 根据用户提供的IP地址,快速查询出该IP地址所在的地理信息和地理相关的信息,包括国家.省.市和运营商.2. 用户可以根据自己所在的位置和使用的IP地址更新我们的服 ...

  10. Spring Boot教程(三十二)多数据源配置与使用(1)

    之前在介绍使用JdbcTemplate和Spring-data-jpa时,都使用了单数据源.在单数据源的情况下,Spring Boot的配置非常简单,只需要在application.propertie ...