jq-在一个值上合并两个json文件

jq-在一个值上合并两个json文件,json,join,jq,Json,Join,Jq,我有两个这样结构的json文件: 文件1 [ { "id": 25422, "location": "Hotel X", "suppliers": [ 12 ] }, { "id": 25423, "location": "Hotel Y", "suppliers": [ 13 ] }] 文件2 [ { "id": 12, "vatNumber": "0000000000" }, {

我有两个这样结构的json文件:

文件1

[
{
    "id": 25422,
    "location": "Hotel X",
    "suppliers": [
        12
    ]
},
{
    "id": 25423,
    "location": "Hotel Y",
    "suppliers": [
        13
    ]
}]
文件2

[
{
    "id": 12,
    "vatNumber": "0000000000"
},
{
    "id": 14,
    "vatNumber": "0000000001"
}]
我想要这样的结果

[
{
    "id": 25422,
    "location": "Hotel X",
    "suppliers": [
        12
    ],
    "vatNumber": "0000000000"
},
{
    "id": 25423,
    "location": "Hotel Y",
    "suppliers": [
        13
    ],
}]
对我来说,重要的是匹配的数字在第一个文件中设置。熔合后,如果简化了工作,则不再需要供应商阵列。 另外,jq不是必需的,但我需要一些可以通过终端设置脚本的东西。
提前感谢您。

以下是许多可能的解决方案之一。如果您的jq没有
索引/2
,请升级jq或包含其def(可从以下网址获得):

调用:

jq -n --argfile f1 file1.json --argfile f2 file2.json -f merge.jq
merge.jq:

INDEX($f2[] ; .id) as $dict
| $f1
| map( ($dict[.suppliers[0]|tostring]|.vatNumber) as $vn
       | if $vn then .vatNumber = $vn else . end)

供应商
数组能否包含多个元素?如果是这样,那么应该输出什么
vatNumber
?@Aaron供应商数组只包含一个参数,这就是我到目前为止看到的。