本文作者:包子也沉默

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

包子也沉默 3年前 (2019-10-25) ( 10-25 ) 1731 0条评论
摘要: Url{get;set;}publicintstreamId{get;set;}}publicclassBindDeviceLiveHttpsJob{publicboolstatus{get;set;}publicstringperiod{get;set;}}通过JsonConvert.DeserializeObject<自定义模型>(stringvalue)反序列化:varresul

前言:

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

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

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

{    "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字符串格式数据定义对应的对象参数模型:code

    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字符串数据);
//最后咱们能够经过对象点属性名称获取到对应的数据

 

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

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

{    "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"];

输出为:操做成功
文章版权声明:除非注明,否则均为本站原创文章,转载或复制请以超链接形式并注明出处。
分享到:
赞 (0

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

发表评论

快捷回复:

评论列表 (有 0条评论, 1731人围观) 参与讨论