Python如何删除嵌套JSON结构中的指定键值对?
Python删除嵌套JSON中指定键的实现方法
核心逻辑:Python中操作JSON本质是操作解析后的字典对象,只需要完成「JSON转字典→删除目标键→(可选)字典转回JSON」三个步骤即可。
前置步骤:解析JSON为Python字典
调用API拿到的返回值一般是JSON字符串,首先用标准库json解析为字典:
import json # 假设api_resp是你调用API拿到的JSON字符串 api_resp = ''' { "data": { "type": "regulations", "id": "1234", "attributes": { "name": "My Own Regulations", "description": "", "created_at": "2021-10-20T15:27:57.834Z", "updated_at": "2021-10-20T15:27:57.834Z", "external_id": null, "source": null, "locked": false } } } ''' # 解析为字典 resp_dict = json.loads(api_resp)
方案1:固定结构下直接删除目标键
如果API返回结构固定,要删除的created_at、updated_at明确在data.attributes层级下,可以直接操作对应节点:
# 直接删除指定键 del resp_dict["data"]["attributes"]["created_at"] del resp_dict["data"]["attributes"]["updated_at"] # 操作完成后如果需要转回JSON字符串,用dumps方法 processed_json = json.dumps(resp_dict, indent=4, ensure_ascii=False) print(processed_json)
方案2:通用递归删除(不限嵌套层级)
如果不确定目标键的所在层级,或者需要批量删除多个指定键(比如同时删除所有created_at、updated_at、external_id),可以用递归函数遍历所有字典节点删除:
def delete_keys_from_dict(d: dict, keys_to_delete: list): # 遍历字典键的副本,避免遍历过程中删除键导致报错 for key in list(d.keys()): value = d[key] # 如果当前值是字典,递归处理 if isinstance(value, dict): delete_keys_from_dict(value, keys_to_delete) # 如果当前键在待删除列表中,移除该键值对 if key in keys_to_delete: del d[key] # 调用示例:批量删除created_at、updated_at两个键 delete_keys_from_dict(resp_dict, ["created_at", "updated_at"]) # 转回JSON字符串 processed_json = json.dumps(resp_dict, indent=4, ensure_ascii=False) print(processed_json)
内容的提问来源于stack exchange,提问作者Alex F
相关产品推荐
相关产品推荐

