前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >将JSON字符串反序列化为指定的.NET对象类型

将JSON字符串反序列化为指定的.NET对象类型

作者头像
追逐时光者
发布2020-06-19 11:47:59
3K0
发布2020-06-19 11:47:59
举报
文章被收录于专栏:编程进阶实战编程进阶实战

前言:

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

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

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

代码语言:javascript
复制
{
    "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字符串格式数据定义对应的对象参数模型:

代码语言:javascript
复制
    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)反序列化:

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

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

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

代码语言:javascript
复制
{
    "id": "123456",
    "code": "0",
    "msg": "操作成功"
}

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

代码语言:javascript
复制
var resultContext=JsonConvert.DeserializeObject<Dictionary<string, object>>(JSON格式数据);

//获取msg的值:
var msg=resultContext["msg"];

输出为:操作成功
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-10-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言:
  • 方法一、在项目中定义对应的对象参数模型,用于映射反序列化出来的参数(复杂JSON字符串数据推荐使用):
  • 方法二、直接将JSON字符串格式数据反序列化转化为字典数据(简单JSON字符串数据推荐使用):
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档