文档章节

C# Json反序列化

o
 osc_x4h57ch8
发布于 2018/04/24 15:15
字数 466
阅读 0
收藏 0

Json反序列化有两种方式【本人】,一种是生成实体的,方便处理大量数据,复杂度稍高,一种是用匿名类写,方便读取数据,较为简单。

使用了Newtonsoft.Json,可以自行在nuget中导入

Json源数据:

var data = "{'jingdong_ldop_receive_trace_get_responce':{'code':'0','querytrace_result':{'data':[{'opeTitle':'快递签收','opeRemark':'货物已交付京东物流','opeTime':'2011/04/17 18:23:20','opeName':'京东快递','waybillCode':'bc00000001'},{'opeTitle':'站点验货','opeRemark':'货物已分配,等待配送','opeTime':'2011/04/23 08:29:56','opeName':'京东快递','waybillCode':'bc00000001'},{'opeTitle':'配送员收货','opeRemark':'配送员开始配送,请您准备收货,','opeTime':'2011/04/23 08:36:28','opeName':'京东快递','waybillCode':'bc00000001'},{'opeTitle':'妥投','opeRemark':'货物已完成配送,感谢您选择京东物流','opeTime':'2011/04/23 09:47:13','opeName':'京东快递','waybillCode':'bc00000001'}],'messsage':'成功','code':100}}}";

第一种:是用匿名方法生成,按照Json的格式,从外到内,一步一步写,非数组用new{},数组用new[]{},名字必须与json中名字一致

//使用匿名变量构造
            {
                var JsonDataForVar = Newtonsoft.Json.JsonConvert.DeserializeAnonymousType(data, new
                {
                    jingdong_ldop_receive_trace_get_responce = new
                    {
                        code = string.Empty,
                        querytrace_result = new
                        {
                            data = new[] {
                            new {
                                   opeTitle=string.Empty,
                                   opeRemark=string.Empty,
                                   opeTime=string.Empty,
                                   waybillCode=string.Empty,
                                   opeName=string.Empty
                            }
                        }
                        }
                    }
                });

                foreach (var item in JsonDataForVar.jingdong_ldop_receive_trace_get_responce.querytrace_result.data)
                {
                    var a = item.opeTitle;
                    var b = item.opeRemark;
                    var c = item.opeTime;
                    var d = item.waybillCode;
                    var f = item.opeName;

                }
            }

第二种:使用实体

//实体部分,建议从内到外写实体,名字必须与json中名字一致【简便方法,搜索Json转实体,将Json字符串导入,自动生成实体】

public class Item
        {
            public string opeTitle { get; set; }
            public string opeRemark { get; set; }
            public string opeTime{ get; set; }
            public string waybillCode { get; set; }
            public string opeName { get; set; }
        }

        public class JdResult
        {
            public string code { get; set; }
            public string msg { get; set; }
            public List<Item> data { get; set; }
        }

        public class JdResponce
        {
            public string code { get; set; }

            public JdResult querytrace_result { get; set; }
        }

        public class JdBody
        {
            public JdResponce jingdong_ldop_receive_trace_get_responce { get; set; }
        }

//方法

//使用实体构造
            {
                var JsonDataForClass = Newtonsoft.Json.JsonConvert.DeserializeAnonymousType(data, new JdBody());

                foreach (var item in JsonDataForClass.jingdong_ldop_receive_trace_get_responce.querytrace_result.data)
                {
                    var a = item.opeTitle;
                    var b = item.opeRemark;
                    var c = item.opeTime;
                    var d = item.waybillCode;
                    var f = item.opeName;
                }
            }

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

Vue-插槽slot/具名插槽

插槽的基本使用: <div id="app"> <cpn> <span>我是替换slot的元素1</span> </cpn>------------------------------------- <cpn2> <span>......

心田已荒
21分钟前
12
0
标准Android按钮具有不同的颜色 - Standard Android Button with a different color

问题: I'd like to change the color of a standard Android button slightly in order to better match a client's branding. 我想稍微更改标准Android按钮的颜色,以便更好地匹配客户的品......

技术盛宴
39分钟前
24
0
如何在Ruby中生成随机字符串 - How to generate a random string in Ruby

问题: I'm currently generating an 8-character pseudo-random uppercase string for "A" .. "Z": 我目前正在为“ A” ..“ Z”生成一个8个字符的伪随机大写字符串: value = ""; 8.times{......

法国红酒甜
今天
20
0
原价500元的认证证书,限时免费考取!

本文作者:y****n 百度云智学院致力于为百度ABC战略(人工智能、大数据、云计算)提供人才生态体系建设,包括基于百度ABC、IoT的课程体系,整合百度优势技术能力的深度学习技术、Apollo无人车...

百度开发者中心
昨天
17
0
在virtualenv中使用Python 3 - Using Python 3 in virtualenv

问题: Using virtualenv , I run my projects with the default version of Python (2.7). 使用virtualenv ,我使用默认版本的Python(2.7)运行项目。 On one project, I need to use Pyth......

富含淀粉
今天
16
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部