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格式校验

相关推荐
moxiaoran57533 小时前
uni-app学习笔记二十九--数据缓存
笔记·学习·uni-app
自小吃多6 小时前
STC8H系列 驱动步进电机
笔记·单片机
安木夕7 小时前
C#-Visual Studio宇宙第一IDE使用实践
前端·c#·.net
moxiaoran57538 小时前
uni-app学习笔记三十--request网络请求传参
笔记·学习·uni-app
gregmankiw10 小时前
C#调用Rust动态链接库DLL的案例
开发语言·rust·c#
明月醉窗台11 小时前
qt使用笔记二:main.cpp详解
数据库·笔记·qt
阿蒙Amon11 小时前
06. C#入门系列【自定义类型】:从青铜到王者的进阶之路
开发语言·c#
Shaoxi Zhang12 小时前
NVM常用命令记录
笔记
wind_one112 小时前
STM32[笔记]--1.前置准备
笔记·stm32·单片机
jackson凌13 小时前
【Java学习笔记】String类(重点)
java·笔记·学习