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

如何保留JSON文件格式?生成符合规范的差异文件data3.json

解决JSON对比导出格式问题

问题背景

我拥有data1.json和data2.json两个JSON数组文件,需要提取data1中独有的条目输出到data3.json,要求data3.json符合标准JSON数组格式:首尾用[]包裹、每个条目带缩进、最后一个条目无尾部逗号。但当前通过手动拼接字符串生成的代码,导出的data3存在格式错误,比如最后条目带逗号、缩进不符合要求。

解决方案

不要手动拼接JSON字符串,直接使用Python内置的json模块处理,它会自动维护标准的JSON格式。具体实现代码如下:

import json

# 读取源JSON文件
with open('data1.json', 'r', encoding='utf-8') as f1:
    data1 = json.load(f1)

with open('data2.json', 'r', encoding='utf-8') as f2:
    data2 = json.load(f2)

# 提取data2中所有userid存入集合,优化查询效率
data2_user_ids = {item['userid'] for item in data2}

# 筛选data1中独有的用户条目
data3 = [item for item in data1 if item['userid'] not in data2_user_ids]

# 写入目标文件,自动处理格式
with open('data3.json', 'w', encoding='utf-8') as f3:
    json.dump(data3, f3, indent=4, ensure_ascii=False)

关键说明

  • json.load()将JSON文件解析为Python列表/字典,避免手动操作字符串带来的格式错误
  • 用集合存储userid,查询效率远高于遍历列表,适合数据量较大的场景
  • json.dump()的indent参数控制缩进空格数(示例中为4),自动生成规范的缩进格式,且最后一个条目不会添加尾部逗号
  • ensure_ascii=False保证导出的非ASCII字符(如中文)正常显示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 01:15:08