jq-在一个值上合并两个json文件
我有两个这样结构的json文件: 文件1jq-在一个值上合并两个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" }, {
[
{
"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供应商数组只包含一个参数,这就是我到目前为止看到的。