首页 > 解决方案 > 如何将两个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)

标签: pythonjson

解决方案


我猜你有 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。


推荐阅读