我有两个 json 文件,每个文件都包含一个简单的对象,例如:
文件 1
{
"key1": "value1",
"key2": "value2"
}
文件2
{
"key1": "valueA",
"key3": "valueB"
}
我需要使用 jq 将这两者结合起来,以便最终得到一个包含两个对象的所有键的对象。如果有公共(public)键,我需要使用第二个对象的值。
我正在努力获得正确的表达方式。我认为这很简单
jq '. * .' file1 file2
应该给我我想要的,但是这会导致非 json 输出:
{
"key1": "value1",
"key2": "value2"
}
{
"key1": "valueA",
"key3": "valueB"
}
如果我使用
jq '. + .' file1 file2
会发生同样的事情.我怎样才能结合这两个对象?
最佳答案
通过传入多个输入文件,每个文件的内容都会流入。您要么必须将它们吞入其中,要么将各个输入组合起来。
$ jq -s 'add' file1 file2
或者
$ jq -n 'reduce inputs as $i ({}; . + $i)' file1 file2
或者,如果您想合并而不是添加。
$ jq -n 'reduce inputs as $i ({}; . * $i)' file1 file2
关于json - 用 jq 合并两个 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47190554/