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

Python3中如何在JSON子对象为空时删除对应的父级元素

嵌套JSON空节点递归清理方案

现有代码问题分析

  • 缺失递归逻辑,仅能处理最外层的字典/列表结构,无法深入insurance字段下的多层嵌套节点完成逐层清理
  • 列表元素处理逻辑存在漏洞,未对列表内部的空字典/空列表做过滤,也没有对清理后为空的父级节点做删除判断

修正后可直接使用的函数

def clean_empty_nested(data):
    # 处理字典类型
    if isinstance(data, dict):
        cleaned_dict = {}
        for key, value in data.items():
            processed_value = clean_empty_nested(value)
            # 仅保留非空的处理后结果
            if processed_value not in (None, {}, []):
                cleaned_dict[key] = processed_value
        return cleaned_dict
    # 处理列表类型
    elif isinstance(data, list):
        cleaned_list = []
        for item in data:
            processed_item = clean_empty_nested(item)
            if processed_item not in (None, {}, []):
                cleaned_list.append(processed_item)
        return cleaned_list
    # 基础类型直接返回
    else:
        return data

使用效果验证

将你提供的示例数据传入该函数,输出结果完全匹配预期:

{
  "_id": "30546c62-8ea0-4f1a-a239-cc7508041a7b",
  "IsActive": "True",
  "name": "Pixel 3",
  "phone": [
    {
      "Bill": 145,
      "phonetype": "xyz",
      "insurance": [
        {
          "year_one_claims": [
            {
             "2020": 200 
            }
          ]
        }
      ]
    }
  ],
  "Provider": {
    "agent": "aaadd"
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:48:05