You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#实现JSON通用分层反序列化构建树形视图方案咨询

通用JSON树形视图无限制实现方案

你要的通用实现不需要提前声明数据结构、不需要手动指定树最大深度,核心是用通用动态JSON解析+迭代栈遍历,所有逻辑和JSON具体结构完全解耦,适配任意合法JSON格式。

核心实现逻辑

  • 解析阶段:不要将JSON反序列化为你提前定义的强类型实体,直接反序列化为语言内置/通用JSON库提供的动态节点结构(C#对应JToken/JsonElement、JavaScript对应原生JSON.parse结果、Python对应json.loads生成的dict/list结构),这一步完全跳过预声明类型的要求。
  • 遍历阶段:维护一个遍历栈,栈中每个元素存储3个信息:当前待处理的JSON节点、当前节点绑定的树形视图父节点、当前遍历深度。初始化时将JSON根节点、树形视图根控件、深度0压入栈。
  • 处理阶段:循环弹出栈顶元素,根据节点类型做对应处理:
    • 若当前是对象(键值对结构):遍历对象所有属性,为每个属性名创建树形子节点,将属性值、新建的子节点、深度+1压入栈
    • 若当前是数组:按顺序遍历所有数组元素,为每个元素创建带索引标识的树形子节点,将数组元素、新建的子节点、深度+1压入栈
    • 若当前是基础值(字符串、数字、布尔值、null):直接在当前节点文本后拼接值内容,作为叶子节点不再入栈

核心代码参考

以下是和具体UI框架、语言无关的核心逻辑伪代码,可以直接迁移到你的技术栈中:

// 初始化遍历栈
Stack<(JsonNode currentJson, TreeNode parentUi, int depth)> traverseStack = new();
// 根节点入栈
JsonNode rootJson = GenericJsonParse(yourJsonString);
TreeNode rootUi = treeView.AddNode("JSON Root");
traverseStack.Push((rootJson, rootUi, 0));

while (traverseStack.Count > 0)
{
    var (json, uiNode, depth) = traverseStack.Pop();
    switch(json.NodeType)
    {
        case JsonType.Object:
            foreach(var (propName, propValue) in json.EnumerateObject())
            {
                var childUi = uiNode.AddNode(propName);
                traverseStack.Push((propValue, childUi, depth + 1));
            }
            break;
        case JsonType.Array:
            int idx = 0;
            foreach(var item in json.EnumerateArray())
            {
                var childUi = uiNode.AddNode($"[{idx}]");
                traverseStack.Push((item, childUi, depth + 1));
                idx++;
            }
            break;
        case JsonType.Primitive:
            uiNode.Text += $": {json.GetRawText()}";
            break;
    }
}

适配说明

你提供的游戏配置JSON可以直接用这套逻辑处理,会自动展开根节点下的arcanePrefs、arcaneControls两个数组,再逐层遍历每个配置项、按键绑定的属性,最终生成的结构和你预期的树形效果完全一致,不需要针对该JSON做任何特殊适配。

这套方案不存在深度限制,哪怕JSON嵌套上百层也可以正常解析;用迭代栈而非纯递归实现,也可以避免极深结构导致的调用栈溢出问题。

内容的提问来源于stack exchange,提问作者Atlas Tabula

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 02:12:42