文章正文:

前言:

  关于将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对象类型的更多相关文章

  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. js 字符串格式化为时间格式

    首先介绍一下我遇到的坑,找了几个关于字符串转时间的,他们都可以就我用的时候不行. 我的原因,我的字符串是MYSQL拿出来的不是标准的时间格式,是不会转成功的. 解决思路:先将字符串转为标准时间格式的字 ...

  2. Gym - 101987G Secret Code (概率+数学积分)

    题意:有A,B,C三个人要见面,每个人在[0,S]随机选择一个时间点作为见面时间,先到的那个人要等下一个人来了之后和他确认信息,然后马上就走. 例如,假如A先到,B其次,C最后到,那么A要等B到了之后 ...

  3. BZOJ1050 [HAOI2006]旅行comf[并查集判图连通性]

    ★ Description 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<30000).给你两个顶点S和T,求 一条路径,使得路径 ...

  4. eclipse从SVN中检出web项目

    提交到svn的时候,选择忽略.project,.settings,.classpath等文件,检出项目的时候就不能选择 [做为工作作为工作空间的项目检出].而应该选择做为新项目检出. 然后选择工程的类 ...

  5. 后端返回图片的url,将其转成base64,再次进行上传

      //将图片变成base64再上传(主要是转化来自客户端的图片)  getUrlBase64=(url, ext)=> {     var canvas = document.createEl ...

  6. linux完整卸载mysql数据库

    由于本机测试环境数据库装错了,需要卸载数据库,记录一下 yum -y remove mysql find / -name mysql /etc/selinux/targeted/active/modu ...

  7. 一次linux站点安装经验

    之前了解了一点,刚过完年回来,顺便研究了一下小程序. http://s.w7.cc/index.php?c=wiki&do=view&id=1&list=84 先申请了一个li ...

  8. docker-compose容器互相连接

    一些示例未整理 haproxy 与nginx 容器连接 ## 服务的compose 编写 mkdir /mnt/compose vim docker-compose.yml web1: image: ...

  9. 并行计算基础(1)(GPU架构介绍)

    一.常用术语 Task:任务.可以完整得到结果的一个程序,一个程序段或若干个程序段.例如搬砖. Parallel Task:并行任务.可以并行计算的任务.多个人搬砖. Serial Execution ...

  10. 《剑指offer》算法题第三天

    今日题目: 斐波那契数列 青蛙跳台阶问题(及其变种:变态跳台阶) 矩形覆盖 旋转数组的最小数字 矩阵中的路径 机器人的运动范围 细心的同学会发现,第1,2,3题其实对应的是<剑指>书上的同 ...