使用 jq 将现有 JSON 的新元素添加到特定列表元素
Add new element to existing JSON to a specific list element with jq
我有一个已经存在的 json,我必须在其中向具有特定键值对的列表元素添加一个新元素。例如:
{
"parent": {
"child-list": [
{
"usecase": "first"
},
{
"usecase": "second"
},
{
"usecase": "third"
}
]
}
}
所以我想要这样的结果:
{
"parent": {
"child-list": [
{
"usecase": "first"
},
{
"usecase": "second",
"result": "SUCCESS"
},
{
"usecase": "third"
}
]
}
}
我试过这个:
jq '.parent."child-list" | map(select(."usecase"=="second") += { "result": "SUCCESS" })' base.json
但它只打印 'child-list' 而不是整个 json。
使用 |=
而不是 |
。它更新对象而不是仅仅将其作为下一个输入(就像您使用 +=
而不仅仅是 +
之后一样)。
jq '.parent."child-list" |= map(select(."usecase"=="second") += { "result": "SUCCESS" })' base.json
我有一个已经存在的 json,我必须在其中向具有特定键值对的列表元素添加一个新元素。例如:
{
"parent": {
"child-list": [
{
"usecase": "first"
},
{
"usecase": "second"
},
{
"usecase": "third"
}
]
}
}
所以我想要这样的结果:
{
"parent": {
"child-list": [
{
"usecase": "first"
},
{
"usecase": "second",
"result": "SUCCESS"
},
{
"usecase": "third"
}
]
}
}
我试过这个:
jq '.parent."child-list" | map(select(."usecase"=="second") += { "result": "SUCCESS" })' base.json
但它只打印 'child-list' 而不是整个 json。
使用 |=
而不是 |
。它更新对象而不是仅仅将其作为下一个输入(就像您使用 +=
而不仅仅是 +
之后一样)。
jq '.parent."child-list" |= map(select(."usecase"=="second") += { "result": "SUCCESS" })' base.json