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

Python递归解析嵌套JSON,提取同级path与url构建字典

层级JSON转路径-URL映射字典的实现方案

需求说明

给定嵌套层级的JSON结构,每个节点包含path(路径)、subPages(子节点数组,位于url字段之前)、url(对应链接)三个字段,需要将所有节点的path作为键、url作为值,生成一个扁平的字典。

原方法问题分析

你之前的json_extract函数仅能提取所有指定键的取值,无法建立path与对应url的关联,也没有针对性处理层级节点的遍历逻辑,因此无法满足需求。

解决方案:递归遍历关联键值

核心逻辑是遍历每个节点时,直接记录当前节点的path和url映射关系,再递归处理所有子节点,最终收集所有映射对。

代码实现

def build_path_url_map(node, result_dict=None):
    # 初始化结果字典,避免递归时重复创建
    if result_dict is None:
        result_dict = {}
    
    # 记录当前节点的path-url映射
    if "path" in node and "url" in node:
        result_dict[node["path"]] = node["url"]
    
    # 递归处理所有子页面节点
    if "subPages" in node and isinstance(node["subPages"], list):
        for sub_node in node["subPages"]:
            build_path_url_map(sub_node, result_dict)
    
    return result_dict

# 测试示例数据
data = {
    "path": "/",
    "subPages": [
        {
            "path": "/1",
            "subPages": [
                {
                    "path": "/12",
                    "subPages": [
                        {
                            "path": "/123",
                            "subPages": [],
                            "url": "123_URL",
                        }
                    ],
                    "url": "12_URL",
                },
                {
                    "path": "/13",
                    "subPages": [
                        {
                            "path": "/131",
                            "subPages": [
                                {
                                    "path": "/1311",
                                    "subPages": [
                                        {
                                            "path": "/13111",
                                            "subPages": [],
                                            "url": "13111_URL",
                                        }
                                    ],
                                    "url": "1311_URL",
                                }
                            ],
                            "url": "131_URL",
                        }
                    ],
                    "url": "13_URL",
                }
            ],
            "url": "1_URL",
        }
    ]
}

# 生成映射字典
result = build_path_url_map(data)
print(result)

代码说明

  • 函数接收当前节点和可选的结果字典,首次调用时自动初始化空字典
  • 优先检查当前节点是否包含path和url字段,存在则直接添加到结果字典
  • 遍历当前节点的subPages数组,对每个子节点递归调用函数,实现全层级遍历
  • 无论JSON嵌套多少层,都能完整收集所有节点的path-url映射关系

运行结果

执行代码后会输出包含所有节点映射的字典:

{
    '/': '1_URL',
    '/1': '1_URL',
    '/12': '12_URL',
    '/123': '123_URL',
    '/13': '13_URL',
    '/131': '131_URL',
    '/1311': '1311_URL',
    '/13111': '13111_URL'
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 18:45:42