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

相关推荐
淮北也生橘1220 分钟前
Linux的V4L2视频框架学习笔记
linux·笔记·学习·音视频·嵌入式linux
咕白m62532 分钟前
C# 实现 Word 与 TXT 文本格式互转
c#·.net
ZZHow102443 分钟前
微信小程序开发笔记(01_小程序基础与配置文件)
笔记·微信小程序·小程序
晴天下小雨o1 小时前
Json-rpc通信项目(基于C++ Jsoncpp muduo库)
c++·rpc·json
凯尔萨厮3 小时前
Java学习笔记四(继承)
java·笔记·学习
ホロHoro3 小时前
学习笔记:Javascript(5)——事件监听(用户交互)
javascript·笔记·学习
黎宇幻生8 小时前
Java全栈学习笔记33
java·笔记·学习
朗迹 - 张伟9 小时前
Golang安装笔记
开发语言·笔记·golang