我有两个结构如下的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
],
}]
对我来说重要的是,在第一个文件中设置了匹配的vatNumber。如果简化了工作,则在合并后不再需要供应商阵列。 另外,jq不是必需的,但是我需要我可以通过终端使用的东西来设置脚本。 预先谢谢你。
答案 0 :(得分:2)
这是许多可能的解决方案之一。如果您的jq没有INDEX/2
,请升级您的jq或包括其def(例如,可从https://github.com/stedolan/jq/blob/master/src/builtin.jq获得):
调用:
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)