C#笔记之解析不确定具体结构的JSON内容

news/2024/9/24 13:21:49/

jsonjson_0">需求:服务器会传一段json信息过来,这个json信息是不固定的,可能传过来的有一层或者多层数组结构。需要把这些信息全部解析出来,并加以运用。

实现:

最关键的可能就是这个JToken了,这玩意能区分这个value数据是不是数组。

// data = json内容
public static void Main(string data){var detailsDictionary = new Dictionary<string, object>();JObject jsonObject = JObject.Parse(data);foreach (var property in jsonObject.Properties()){if (property.Value is JArray){detailsDictionary[property.Name] = ProcessArray((JArray)property.Value);}else{detailsDictionary[property.Name] = property.Value.ToString();}}// Use the detailsDictionary as neededforeach (var keyValuePair in detailsDictionary){Debug.Log(keyValuePair.Key + " + " + keyValuePair.Value);}}static object ProcessArray(JArray array){var list = new List<object>();foreach (var item in array){if (item is JObject){var nestedDictionary = new Dictionary<string, object>();foreach (var prop in ((JObject)item).Properties()){nestedDictionary[prop.Name] = ProcessToken(prop.Value);}list.Add(nestedDictionary);}else{list.Add(item.ToString());}}return list;}static object ProcessToken(JToken token){switch (token.Type){case JTokenType.Array:return ProcessArray((JArray)token);case JTokenType.Object:var nestedDictionary = new Dictionary<string, object>();foreach (var prop in ((JObject)token).Properties()){nestedDictionary[prop.Name] = ProcessToken(prop.Value);}return nestedDictionary;default:return token.ToString();}}

这样就把json里面的所有数据都解析出来了,然后对其进行操作就可以了。

json格式校验


http://www.ppmy.cn/news/1426617.html

相关文章

react15升级17问题记录

,当前旧项目主要依赖版本介绍&#xff1a;这里只贴出重要依赖包的旧版本做展示&#xff0c;可以看到版本都相当落后了&#xff0c;升级的话会涉及一些API以及依赖的修改或者弃用 次文章只记录当前项目使用&#xff0c;其他项目不一定通用 {"react": "^15.6.1&q…

“中医显示器”是人体健康监测器

随着科技的进步&#xff0c;现代医学设备已经深入到了人们的日常生活中。然而&#xff0c;在这个过程中&#xff0c;我们不应忘记我们的医学根源&#xff0c;中医。我们将中医的望、闻、问、切四诊与现代科技相结合&#xff0c;通过一系列的传感器和算法将人体的生理状态以数字…

设计模式代码实战-桥接模式

1、问题描述 小明家有一个万能遥控器&#xff0c;能够支持多个品牌的电视。每个电视可以执行开机、关机和切换频道的操作&#xff0c;请你使用桥接模式模拟这个操作。 输入示例 6 0 2 1 2 0 4 0 3 1 4 1 3 输出示例 Sony TV is ON TCL TV is ON Switching Sony TV channel S…

WordPress 主题选择与自定义配置

最近我在使用wordpress网站进行建站。 我是使用的hostease的主机产品进行wordpress建站&#xff0c;在选择wordpress主题时颇为头疼。后来咨询了hostease的客服人员&#xff0c;他们家的技术人员提供了诸多帮助。在WordPress网站建设时&#xff0c;主题选择对于建立各类网站至关…

Webpack 5配置详解与性能优化技巧

Webpack 5是一款非常流行的前端打包工具&#xff0c;它可以帮助我们将多个前端资源&#xff08;如JS、CSS、图片等&#xff09;打包成一个或多个静态资源文件。在使用Webpack 5时&#xff0c;我们可以通过配置文件来定制打包的方式和过程&#xff0c;同时也可以通过一些优化技巧…

Android JNI使用dlopen动态链接库

dlopen 是一个用于在系统中动态加载共享库&#xff08;动态链接库&#xff09;的函数。它的主要作用是在程序运行时动态地加载共享库&#xff0c;使得程序可以在不重新编译的情况下加载并使用库中的函数和变量。 具体来说&#xff0c;dlopen 函数可以接受一个共享库的路径作为…

Mac搭建Java环境【环境搭建】

Mac搭建Java环境【环境搭建】 1 安装Java SDK 官网地址&#xff1a;https://www.oracle.com/java/technologies/downloads/archive/ 下载dmg&#xff0c;双击之后无脑安装即可。 # 进入 JDK 安装目录 cd /Library/Java/JavaVirtualMachines# 查看文件 ls# 输入 cd ~# 打开环…

iOS开发 刻度盘 仪表盘,圆点按钮滑动控制,渐变色

最近项目需要&#xff0c;想做一个渐变色的刻度盘&#xff0c;圆形按钮滑动控制&#xff0c;所以 用oc写了一下&#xff0c;代码没附上&#xff0c;想看代码可以私信联系&#xff0c;效果如下图。 部分代码 self.drawCenter CGPointMake(self.frame.size.width / 2.0, self.f…