如何将多个 json 个文件合并为一个文件

how to merge multiple json files into a single file

在一个目录下,我可以有多个文件,以...为例...

chunk26.4ec7e9b2.json

{
    "/css/app.css": "/css/app.css?id=0f487b3ea1da478a47ce"
}

chunk57.9bc6ea1f.json

{
    "/js/app.js": "/js/app.js?id=f3eda47538cccd3ab358",
    "/js/empresa.js": "/js/empresa.js?id=2e389af5c75f398c7c97",
    "/js/passwordreset.js": "/js/passwordreset.js?id=2f48c7b9a250fb573381",
    "/js/prelogin.js": "/js/prelogin.js?id=4835300bf9075df04126"
}

如何将这些文件合并为一个有效的 json 文件,请记住我可以有 N 个文件,它们的名称可以是任何名称但始终带有 json 扩展名,这结果将保存在当前目录中。

预期结果

{
    "/js/app.js": "/js/app.js?id=f3eda47538cccd3ab358",
    "/js/empresa.js": "/js/empresa.js?id=2e389af5c75f398c7c97",
    "/js/passwordreset.js": "/js/passwordreset.js?id=2f48c7b9a250fb573381",
    "/js/prelogin.js": "/js/prelogin.js?id=4835300bf9075df04126",
    "/css/app.css": "/css/app.css?id=0f487b3ea1da478a47ce"
}

重要的是最后一行不能有逗号。

因为我还在学习python,我得到了一部分,至少我能看到每一行

import glob;
files=[];

for filename in glob.glob("*.json"):
    print(filename);
    files.append(filename);

print(files);

for filename in files:
    with open(filename, "r") as a_file:
          for line in a_file:
              print(line)

...但我真的不知道这是达到预期结果的最功能或最实用的方法

您可以使用一个名为 package-json-merge 的小工具。这是一个 nodejs 库,但我认为在这里值得一提。

请注意,当我们谈论相似字段时,文件的顺序很重要

你的情况可能是这样的

package-json-merge chunk57.9bc6ea1f.json chunk26.4ec7e9b2.json > result.json
import json

files = ['file1.json', 'file2.json', 'file3.json']
combined_json = {}
for filename in files:
    with open(filename) as f:
        file_json = json.load(f)
    combined_json.update(file_json)