通过python中的键合并json文件(或其他一些简单的脚本语言)

时间:2015-08-21 16:00:57

标签: python json

我想将多个json文件合并到一个对象或文件中。示例JSON对象可以是

{
"food": {
    "ingredents": [

            "one": "this",
            "two": "that",

            ]

        }
  }

"food": {
    "amount": [

            "tablespoons": "3",

            ]
        }
  }

我希望能够合并这些以便我们获得

"food": {
    "ingredents": [

            "one": "this",
            "two": "that",

            ],
      "amount": [

            "tablespoons": "3",

            ]
        }

  }

这样它们都可以通过父键组合而不仅仅是“食物”重复的列表。此外,我希望传出的文件可以替换任何重复的内容,例如,如果成分“one”:“this”存在于其他地方,它只会出现一次。

非常感谢任何帮助。特别是迭代JSON文件列表并应用该方法的东西是理想的。

我尝试过使用glob并迭代JSON文件 比如

ar = []
for f in glob.glob("*.json"):
    with open(f, "rb") as filename:
        ar.append(json.load(filename))

with open("outfile.json", "w") as outfile:
    json.dump(ar, outfile)

但这只是给我一个JSON对象列表,而不用按键连接它们。

我可能会编写一个解决方案来收集关键数据并使用条件来确定将对象放在某个键中的位置,但这需要更多的工作,尤其是因为我处理的是大量文件。如果有一个更简单的解决方案,那将是惊人的。

1 个答案:

答案 0 :(得分:1)

不确定您尝试过的哪些图书馆根据您的需要无法正常使用,但我建议使用lodash。它是一个非常快速,小巧,强大的库来处理这些类型的操作。对于这种特定情况,您可以使用lodash merge https://lodash.com/docs#merge

轻松完成此操作

示例:

display: table-cell