当前位置:首页 > 科技  > 软件

C# 解析 key 值动态的 json 数据

来源: 责编: 时间:2024-04-02 17:23:48 244观看
导读背景之前在对接第三方的api的时候,对方给的数据格式是这样的json就是没有字段属性这一说 ,都是数据,而且格式还是不固定的。第一眼看到这东西,心里第一反应是想骂人,但是没办法,睡觉人家是大爷。那就的想办法解析成我们看得

Po228资讯网——每日最新资讯28at.com

背景

Po228资讯网——每日最新资讯28at.com

之前在对接第三方的api的时候,对方给的数据格式是这样的jsonPo228资讯网——每日最新资讯28at.com

Po228资讯网——每日最新资讯28at.com

Po228资讯网——每日最新资讯28at.com

就是没有字段属性这一说 ,都是数据,而且格式还是不固定的。Po228资讯网——每日最新资讯28at.com

第一眼看到这东西,心里第一反应是想骂人,但是没办法,睡觉人家是大爷。Po228资讯网——每日最新资讯28at.com

那就的想办法解析成我们看得懂的数据。Po228资讯网——每日最新资讯28at.com

Po228资讯网——每日最新资讯28at.com

思路

仔细观察发现,键值对的规律是第一个字段是string 类型,但是第二个是对象类型。加上没有字段名称。所以第一想到的是Dictionary。Po228资讯网——每日最新资讯28at.com

Po228资讯网——每日最新资讯28at.com

下面看下Dictionary特性:Po228资讯网——每日最新资讯28at.com

  • 必须包含名空间System.Collection.Generic   
  • Dictionary里面的每一个元素都是一个键值对(由二个元素组成:键和值)   
  • 键必须是唯一的,而值不需要唯一的   
  • 键和值都可以是任何类型(比如:string, int, 自定义类型,等等)   
  • 通过一个键读取一个值的时间是接近O(1)   
  • 键值对之间的偏序可以不定义

Po228资讯网——每日最新资讯28at.com

所以对应的c# 类型是Dictionary<string, dynamic>>。Po228资讯网——每日最新资讯28at.com

Po228资讯网——每日最新资讯28at.com

眼见为实,那么接下来我们来验证下是否可行。Po228资讯网——每日最新资讯28at.com

Po228资讯网——每日最新资讯28at.com

(1) nuget引用 using Newtonsoft.Json;Po228资讯网——每日最新资讯28at.com

Po228资讯网——每日最新资讯28at.com

(2) 准备一段数据Po228资讯网——每日最新资讯28at.com

{    "r545454aa":"gfgf方(rttr)",    "111":"机trtrrt",      "rrr":"2022-02-11",    "tt":[        "ghhg",        "nbbn"    ],    "545454":"fdfdfd"   }

Po228资讯网——每日最新资讯28at.com

(3) 解析  JsonConvert.DeserializeObject<Dictionary<string, dynamic>>Po228资讯网——每日最新资讯28at.com

   private string Convertjson(string jsonStr)        {            var model = JsonConvert.DeserializeObject<Dictionary<string, dynamic>>(jsonStr);            List<QAModel> list = new List<QAModel>();            foreach (var item in model)            {            。。。。。。。。。。。。            }            }

Po228资讯网——每日最新资讯28at.com

(4) 到这里我们测试发现,数据正常解析了,接下来我们就是对dynamic进行再次解析了。Po228资讯网——每日最新资讯28at.com

  if (item.Value is string)                {                    Text = item.Value;                }                else                {                    。。。。。。。。。。。。。                }

Po228资讯网——每日最新资讯28at.com

到此,问题解决。Po228资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-80894-0.htmlC# 解析 key 值动态的 json 数据

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 避免犯错!C++编程中的十大高频易犯错误

下一篇: Angular 重磅回归,能否重回巅峰?

标签:
  • 热门焦点
  • SpringBoot中使用Cache提升接口性能详解

    环境:springboot2.3.12.RELEASE + JSR107 + Ehcache + JPASpring 框架从 3.1 开始,对 Spring 应用程序提供了透明式添加缓存的支持。和事务支持一样,抽象缓存允许一致地使用各
  • 一篇聊聊Go错误封装机制

    %w 是用于错误包装(Error Wrapping)的格式化动词。它是用于 fmt.Errorf 和 fmt.Sprintf 函数中的一个特殊格式化动词,用于将一个错误(或其他可打印的值)包装在一个新的错误中。使
  • 企业采用CRM系统的11个好处

    客户关系管理(CRM)软件可以为企业提供很多的好处,从客户保留到提高生产力。  CRM软件用于企业收集客户互动,以改善客户体验和满意度。  CRM软件市场规模如今超过580
  • 三万字盘点 Spring 九大核心基础功能

    大家好,我是三友~~今天来跟大家聊一聊Spring的9大核心基础功能。话不多说,先上目录:图片友情提示,本文过长,建议收藏,嘿嘿嘿!一、资源管理资源管理是Spring的一个核心的基础功能,不
  • 本地生活这块肥肉,拼多多也想吃一口

    出品/壹览商业 作者/李彦编辑/木鱼拼多多也看上本地生活这块蛋糕了。近期,拼多多在App首页&ldquo;充值中心&rdquo;入口上线了本机生活界面。壹览商业发现,该界面目前主要
  • AI芯片初创公司Tenstorrent获三星和现代1亿美元投资

    Tenstorrent是一家由芯片行业资深人士Jim Keller领导的加拿大初创公司,专注于开发人工智能芯片,该公司周三表示,已经从现代汽车集团和三星投资基金等
  • iQOO Neo8 Pro即将开售:到手价3099元起 安卓性能最强旗舰

    5月23日,iQOO如期举行了新品发布会,全新的iQOO Neo8系列也正式与大家见面,包含iQOO Neo8和iQOO Neo8 Pro两个版本,其中标准版搭载高通骁龙8+,而Pro版更
  • OPPO K11采用全方位护眼屏:三大护眼能力减轻视觉疲劳

    日前OPPO官方宣布,全新的OPPO K11将于7月25日正式发布,将主打旗舰影像,和同档位竞品相比,其最大的卖点就是将配备索尼IMX890主摄,堪称是2000档位影像表
  • 电博会与软博会实现"线下+云端"的双线融合

    在本次“电博会”与“软博会”双展会利好条件的加持下,既可以发挥展会拉动人流、信息流、资金流实现快速交互流动的作用,继而推动区域经济良性发展;又可以聚
Top