【发布时间】:2023-03-26 22:02:02
【问题描述】:
我正在尝试使用jq 选择性地更改嵌套在数组中的对象的单个属性,从而保持数组的其余部分不变。生成的属性值需要向上引用父对象的某个属性。
以这个数组为例:
[
{
"name": "keep_me"
},
{
"name": "leave_unchanged",
"list": [
{
"id": "1",
"key": "keep_this"
}
]
},
{
"name": "a",
"list": [
{
"id": "2",
"key": "also_keep_this"
},
{
"id": "42",
"key": "replace_this"
}
]
}
]
我想更改最后一个键(replace_this)的值,使用父对象的name 属性生成类似generated_value_for_a_42 的值。
这里的关键问题似乎是保持数组的其余部分保持不变,同时更新特定的元素。但是,将“树上”提到父属性的需要使事情变得复杂。
我尝试将更改包装在括号中以保留未触及的元素,但随后在将变量绑定(使用as)到正确的范围以访问父属性时遇到了麻烦。所以我要么最终丢弃了数组或对象的一部分,要么得到了关于变量绑定的错误。
【问题讨论】: