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

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

实现:

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

csharp 复制代码
// 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 needed
            foreach (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格式校验

相关推荐
lingggggaaaa27 分钟前
小迪安全学习笔记(一百零二讲)—— 漏扫项目篇&PoC开发&Yaml语法&插件一键生成&匹配结果&交互提取
笔记·学习·安全·网络安全·交互
君莫愁。37 分钟前
【Unity】构建超实用的有限状态机管理类
unity·c#·游戏引擎·有限状态机
肥肠可耐的西西公主2 小时前
后端(JavaWeb)学习笔记(CLASS 2):SpringBootWeb入门
笔记·学习
白云偷星子2 小时前
MySQL笔记11
数据库·笔记·mysql
半夏知半秋2 小时前
skynet.newservice接口分析
笔记·后端·学习·安全架构
立志成为大牛的小牛3 小时前
数据结构——十四、构造二叉树(王道408)
数据结构·笔记·学习·程序人生·考研
RanceGru3 小时前
LLM学习笔记5——本地部署ComfyUI和Wan2.1-T2V-1.3B文生视频模型
笔记·学习·stable diffusion·transformer
koo3643 小时前
李宏毅机器学习笔记18
笔记
x_lrong4 小时前
个人AI环境快速搭建
人工智能·笔记
teeeeeeemo4 小时前
Webpack 模块联邦(Module Federation)
开发语言·前端·javascript·笔记·webpack·node.js