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

相关推荐
心平气和量大福大7 小时前
C#-WPF-UserControl-生命周期(加载 退出)
开发语言·c#·wpf
sunywz7 小时前
【c#】 Web Deploy一键发布,IIS部署全流程
开发语言·前端·c#
一只小菜鸡..7 小时前
南京大学 操作系统 (JYY) 学习笔记:导论与历史的轮回 (OS Introduction)
笔记·学习
xqqxqxxq8 小时前
LeetCode Hot100 双指针专项题解笔记
笔记·算法·leetcode
懿路向前8 小时前
【HarmonyOS学习笔记】2026-07-24 | textProcessing 实体识别与踩坑实录
笔记·学习·边缘计算·harmonyos
前网易架构师-高司机8 小时前
带标注的扑克牌识别数据集,识别率99.5%,3083张图,支持yolo,coco json,voc xml,文末有模型训练代码
xml·yolo·json·数据集·数字·扑克牌·纸牌
春生野草8 小时前
C基础--八大排序(个人笔记)
c语言·笔记·排序算法
前网易架构师-高司机8 小时前
带标注的浮游藻类24种数据集,识别率91.5 %数据集, 23175张图,支持yolo,coco json,voc xml,文末有模型训练代码
yolo·json·数据集·微观·生物·浮游·藻类
caimouse9 小时前
MM 学习笔记 09:进程会话与工作集
笔记·学习·reactos
星恒随风9 小时前
C++ 继承进阶:默认成员函数、多继承、虚继承与组合设计
开发语言·c++·笔记·学习