python - 如何将两个json文件合并为一个?
问题描述
如何将两个 json 文件与第一个文件和第二个文件中的所有信息合并为一个?
例如:
json1 = {"info": [{"id": "3", "book_id": "88" }]}
json2 = {"info": [{"id": "100", "book_id": "77" }]}
final_result = {
"info": [
{"id": "3", "book_id": "88" },
{"id": "100", "book_id": "77"}
]
}
现在它只是更新它,并从第一个文件夹中删除所有信息
import json
with open("folder1/1.json") as fin1:
data1 = json.load(fin1)
with open("folder2/1.json") as fin2:
data2 = json.load(fin2)
data1.update(data2)
with open("together.json", "w") as fin3:
json.dump(data1, fin3)
解决方案
我猜你有 2 个具有相同(或重叠)键的对象。要将两者都写入新文件,您可以执行以下操作
json.dump([data1, data2], fin3)
或者
json.dump({folder1: data1, folder2: data2}, fin3)
编辑 - 给定您指定的预期输出结构,您可以像这样合并对象
def merge_dicts(*dicts):
r = {}
for d in dicts:
for k, v in d.items():
r.setdefault(k, []).extend(v)
return r
然后你只需将这个合并的字典写入 json:
with open('data.json', 'w') as f:
json.dump(merge_dicts(data1, data2), fin3)
一般来说,从 json 加载的数据只是一个字典或列表,因此您可以像其他 Python 变量一样合并和操作它们,然后再将它们保存回 json。
推荐阅读
- python - 在列表 django 中存储数据列表
- git - Rebase git 子模块和父 repo
- java - 无法在 Android 中使用 Picasso 从 URL 加载图像
- java - 通过 fastlane for android CD 在 Slack API 中丢失_scope
- hadoop - 尝试运行 HADOOP 2.8.0;本地主机拒绝连接
- swift - 在 SpriteKit 中没有执行纹理的简单动画
- python - 如何查找在 30 天内进行第二次购买的第一次购买日期?
- python - 使用 python-docx 模块将 HTML 转换为 word 文档
- typescript - 在 Typescript 云功能中导入 Firebase 客户端 SDK 时出错
- javascript - 如何将数组对象保存到 Chrome 本地存储中