删除 JSON 数组对象中的某个字段
我需要将 JSON 字符串中的一个对象属性删除,如果手动删除,又累又无聊。
一个 Python 脚本搞定。
import json
def remove_filename_and_save(input_path, output_path):
"""
从JSON数组中移除所有对象的filename属性并保存到新文件
Args:
input_path: 输入JSON文件路径
output_path: 输出JSON文件路径
"""
try:
# 读取输入JSON文件
with open(input_path, 'r', encoding='utf-8') as f:
data = json.load(f)
# 检查是否是数组
if not isinstance(data, list):
print("错误:输入JSON不是数组对象")
return False
# 处理每个对象
processed_data = []
for item in data:
if isinstance(item, dict):
# 创建新对象,排除filename属性
new_item = {k: v for k, v in item.items() if k != 'filename'}
processed_data.append(new_item)
else:
processed_data.append(item) # 非字典元素保持不变
# 写入输出文件
with open(output_path, 'w', encoding='utf-8') as f:
json.dump(processed_data, f, ensure_ascii=False, indent=2)
print(f"成功处理并保存到 {output_path}")
return True
except FileNotFoundError:
print(f"错误:输入文件 {input_path} 未找到")
return False
except json.JSONDecodeError:
print(f"错误:输入文件 {input_path} 不是有效的JSON格式")
return False
except Exception as e:
print(f"处理文件时出错: {e}")
return False
if __name__ == "__main__":
# 文件路径配置
input_json = "/data/data.json" # 输入文件路径
output_json = "/data/data-temp.json" # 输出文件路径
# 执行处理
if remove_filename_and_save(input_json, output_json):
print(f"操作成功完成,结果已保存到 {output_json}")
else:
print("操作失败,请检查错误信息")
可以基于该脚本进行扩展。