文章正文:

前言:

  关于将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. 【HDU2204】Eddy's爱好

    题目大意:求从 1 到 N 中共有多少个数可以表示成 \(M^K,K \gt 1\).\(N \le 1e18\) 题解: 发现 N 很大,若直接枚举 M 的话有 1e9 级别的数据量,肯定超时,因此 ...

  2. hadoop namenode切换

    hdfs haadmin -transitionToActive --forcemanual nn1 将nn1强制转换为Active hdfs haadmin -transitionToStandby ...

  3. std::this_thread::sleep_until

    头文件:<thread>                  (C++11) template<class Clock, class Duration> void sleep_u ...

  4. b2b推广方式有哪些-

    b2b推广方式有哪些 老黄牛推广软件订做 Q:935744345 专业团队,高效推广

  5. css 内容居中

    css: parent{display:table;} child{display:table-cell;vertical-align:middle;}

  6. Codeforces Round #560 Div. 3

    题目链接:戳我 于是...风浔凌弱菜又去写了一场div.3 总的来说,真的是比较简单.......就是.......不开long long见祖宗 贴上题解-- A 给定一个数,为01串,每次可以翻转一 ...

  7. BZOJ 3836 Codeforces 280D k-Maximum Subsequence Sum (模拟费用流、线段树)

    题目链接 (BZOJ) https://www.lydsy.com/JudgeOnline/problem.php?id=3836 (Codeforces) http://codeforces.com ...

  8. Unity3D_(游戏)卡牌02_主菜单界面

      启动屏界面.主菜单界面.选关界面.游戏界面 卡牌01_启动屏界面 传送门 卡牌02_主菜单界面 传送门 卡牌03_选关界面 传送门 卡牌04_游戏界面    传送门 主菜单界面 (选择左边图标或选 ...

  9. centOS7安装docker遇到 [Errno 14] curl#35 - "TCP connection reset by peer问题解决

    ---------------------------------------------------------------------------------------------------- ...

  10. 分布式-信息方式-ActiveMQ的动态网络链接

    ActiveMQ的动态网络链接多播协议 multicast ActiveMQ使用 Multicast协议将一个 Service和其他的 Broker的 Service连接起来,IPmulticast是 ...