Есть много вопросов, связанных с jq
, о слиянии JSON документов, но все они, похоже, касаются слияния документов с одинаковой структурой.
Моя проблема в другом, мне нужно объединить дочерние документы в родительский документ, где дочерний и родительский документы имеют разную структуру.
Родительский документ выглядит так:
{
"resources": [
{
"name": "child0",
"properties": {
"template": {}
}
},
{
"name": "child1",
"properties": {
"template": {}
}
},
{
"name": "child2",
"properties": {
"template": {}
}
}
]
}
Мне нужно объединить дочерние документы документы в .resources[].properties.template
, так что первый файл находится в .resources[0].properties.template
, второй файл находится в .resources[1].properties.template
et c.
Обратите внимание, что структура дочерних документов здесь не важна, так как я хочу объединить их целиком.
Я действительно заставил это работать, но с использованием нескольких команд:
jq '.resources[0].properties.template += input' main.json child0.json > temp0.json
jq '.resources[1].properties.template += input' temp0.json child1.json > temp1.json
jq '.resources[2].properties.template += input' temp1.json child2.json > temp2.json
mv temp2.json merged.json
rm temp*.json
Это довольно уродливо - я ищу одну jq
команда, которая может объединять дочерние файлы.