zoukankan      html  css  js  c++  java
  • C#如何简单快速的解析复杂的JSON格式接口数据

    一、背景介绍

    之前有个碰到一个学员问阿笨老师,说他现在工作内容是对外对接第三方API接口,但是文档中有大量的接口是一大堆复杂的JSON格式的字符串(比如:有单个对象,有数组对象,还有多层嵌套对象等等,他说不会解析为C#对象,问能不能帮助一下他,教他一下以后如何碰到这类复杂的JSON格式都会进行解析。俗话说的好:授人以鱼不如授人以渔!希望这么一点小技能能够帮助到有需要的同学哈。

    二、提出问题

    一般API接口都会有一个自己定义的标准的响应的数据格式,比如这位同学对接的API接口数据格式说明(如下图),从图中我们可以看到code节点和message节点是固定响应头,唯一变化的是data节点。那么大家有没有想到变化的类型在C#中我们可以用什么类型进行替代呢?答案想必大家都知道,那就是泛型T。

    二、分析问题

    先来一个简单一点的JSON格式:

    再来稍微一点复杂的JSON格式

    如果接口字段少一点的话,我们还可以JSON节点通过手动进行Mapping映射为C#实体对象属性。那么如果接口字段比较多,数据类型比较复杂,而且层级嵌套比较深的话,有没有简单快速的方式进行自动化的方式自动生成Mapping映射我们想要的C#实体对象呢?答案:是肯定的!!!接下来阿笨将给大家推荐几种方式,敬请拭目以待。

    三、解决问题

    1)、在线json生成C#实体工具类,这里阿笨推荐下面两款

    http://www.jsons.cn/jsontomodel/

    http://www.bejson.com/convert/json2csharp

    使用方式很简单,复制JSON格式字符串,直接点击生成C#实体对象类。

    2)、VS2019自动格式转换。

    1、复制你要转换的JSON格式字符串。(记住一定要先复制自己想要转换的JSON格式字符串哦)

    2、打开VS2019(其他低版本VS版本阿笨没测试,自己去试一下哦),找到【编辑】-【选择性粘贴】-【将JSON粘贴为类】

    所有的工具都不是万能的,转换后的格式需要自己验证一下是否合理哦。不过大家放心,大部分的JSON类型的字符串类型都可以做到一键生成。哈哈,有点类似代码生成器的感觉,太爽了。

    四、唠叨了这么多,阿笨快来上干货

    给大家写了几个示例DEMO,只要能够掌握这几个示例,以后解析任何复杂类型的JSON字符串都没有障碍了。

    核心的一句话是:json字符串反序列化为C#对象,C#对象序列化为JSON字符串。

    示例一:简单格式的JSO你字符串:

    示例二:稍微复杂一点的字符串

    示例三:Dictionary<string, object> 转JSON字符串

    示例四:数组[] 转JSON字符串

    示例五:集合转JSON数组

    五、源代码示例下载

    扫码关注下方微信公众号,回复n80c关键字获取源代码下载地址。

    有问题微信公众号回复wx关键字,加阿笨的个人微信号。

    作者:阿笨

          【官方QQ一群:跟着阿笨一起玩NET(已满)】:422315558跟着阿笨一起玩NET

          【官方QQ二群:跟着阿笨一起玩C#(已满)】:574187616跟着阿笨一起玩C#

          【官方QQ三群:跟着阿笨一起玩ASP.NET(已满)】:967920586跟着阿笨一起玩ASP.NET

          【官方QQ四群:Asp.Net Core跨平台技术开发(可加入)】:806491485Asp.Net Core跨平台技术开

          【官方QQ五群:.NET Core跨平台开发技术(可加入)】:1036896405.NET Core跨平台开发技术

          【网易云课堂】:https://study.163.com/provider/2544628/index.htm?share=2&shareId=2544628

          【腾讯课堂】:https://abennet.ke.qq.com

          【51CTO学院】:https://edu.51cto.com/sd/66c64

          【微信公众号】:http://dwz.cn/ABenNET

  • 相关阅读:
    JavaScript 操作页面元素
    各系地图坐标互相转换
    手机测试 wamp/appSer
    mvc 过滤器
    MVC 网站发布
    渐变色彩 省略标记 嵌入字体 文本阴影
    边框
    CSS 水平居中总结
    CSS 颜色值 长度值
    CSS 布局模型
  • 原文地址:https://www.cnblogs.com/51net/p/14337135.html
Copyright © 2011-2022 走看看