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
相关产品推荐
相关产品推荐

