Ответ 1
Итак, я принимаю удар в темноте (смешать метафоры), но это дает то, что, по-видимому, является желаемым результатом:
cat test.json | jq '.Project[0].projectName.tag[0].tagName |= .+ ["path2"] | .Project[0].projectName.branch[0].branchName |= .+ ["path2"]'
|= .+ [...]
по существу добавляет новый элемент массива. Вы можете использовать спецификации массива для хорошего эффекта для всех элементов массива, опустив 0
от, например, tag[0]
.
Это дает:
{
"Project": [
{
"projectName": {
"tag": [
{
"tagName": [
"path",
"path2"
]
}
],
"branch": [
{
"branchName": [
"path",
"path2"
]
}
]
}
}
]
}
Изменить - если теперь я понимаю новый метод (но я мог что-то пропустить), мы начинаем с:
{
"Project": {
"projectName": {
"tag": {
"tagName": [
"path",
]
},
"branch": {
"branchName": [
"path",
]
}
}
}
}
Затем установите некоторые переменные и примените это преобразование:
Project=projectName ProjectNumber=path2 Branch=branchName Tag=tagName
jq ".Project.${Project}.tag.${Tag} |= .+ [\"${ProjectNumber}\"] | .Project.${Project}.branch.${Branch} |= .+ [\"${ProjectNumber}\"]"
И получим:
{
"Project": {
"projectName": {
"tag": {
"tagName": [
"path",
"path2"
]
},
"branch": {
"branchName": [
"path",
"path2"
]
}
}
}
}