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

Python中嵌套JSON扁平化时出现RecursionError递归深度超限问题求助

错误原因

输入JSON中的goal是包含2个元素的列表,而你的convert_list_to_kv函数仅处理长度为1的列表,无法将其扁平化。每次调用simplify_multy_nested_json_recur时,goal列表始终存在,导致函数无限递归调用自己,触发RecursionError。

修复方案

修改扁平化逻辑,让它能处理任意长度的列表,同时移除不必要的递归嵌套。以下是调整后的代码:

def flatten_json(obj, parent_key=""):
    """递归扁平化嵌套JSON,支持字典和任意长度的列表"""
    result = {}
    if isinstance(obj, dict):
        for key, value in obj.items():
            new_key = f"{parent_key}_{key}" if parent_key else key
            result.update(flatten_json(value, new_key))
    elif isinstance(obj, list):
        for idx, item in enumerate(obj):
            new_key = f"{parent_key}_{idx}" if parent_key else str(idx)
            result.update(flatten_json(item, new_key))
    else:
        result[parent_key] = obj
    return result

# 测试输入
input_json = {
    'resourceType':'CP','id':'af160c6b',
    'period':{'start':'1987-12-21T06:22:41-05:00'},
    'careTeam':[{'reference':'79a33a776b59'}],
    'goal':[{'reference':'c14'},{'reference':'b88'}],
    'activity':[{'detail':{'code':{'coding':[{'code':'160670007','display':'Diabetic diet'}],'text':'Diabetic diet'},'status':'in-progress'}}]
}

# 生成扁平化结果
flattened_data = flatten_json(input_json)
print(flattened_data)
代码说明
  • 合并原有的多个函数为单一的flatten_json,直接处理所有嵌套结构:
    • 遇到列表时,用索引(如goal_0、goal_1)作为键的后缀,将列表元素展开为独立键值对;
    • 递归处理嵌套字典,直到所有值都是非嵌套的基础类型;
    • 彻底避免了原代码中因未处理长列表导致的无限递归问题。
扁平化结果示例

处理后的数据可直接用于生成CSV:

{
    'resourceType': 'CP',
    'id': 'af160c6b',
    'period_start': '1987-12-21T06:22:41-05:00',
    'careTeam_0_reference': '79a33a776b59',
    'goal_0_reference': 'c14',
    'goal_1_reference': 'b88',
    'activity_0_detail_code_coding_0_code': '160670007',
    'activity_0_detail_code_coding_0_display': 'Diabetic diet',
    'activity_0_detail_code_text': 'Diabetic diet',
    'activity_0_detail_status': 'in-progress'
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 16:33:15