我有一个巨大的 JSON 对象,里面有一个对象数组。我必须将键:值对添加到数组中的特定对象。例如,让输入对象为:
{
"a": {
"b": [
{
"name": "name1",
"value": 1,
"param": {
"p1": "par1"
}
},
{
"name": "name2",
"value": 2,
"param": {
"p1": "par2"
}
},
{
"name": "name3",
"value": 3,
"param": {
"p1": "par3"
}
}
],
"c": 4,
"d": 5
}
}
使用索引,修改很容易:
jq '.a.b[0].param += {new: "QQQ"}'
但我不能 100% 确定索引。我必须用名称标签指定对象.name == "name1"
。
如何修改名称标签所标识的对象?
我不知道最好的方法是什么,但你可以这样做:
使用 选择要更新的元素
select()
,然后使用map()
将选择和分配映射到b
子数组的所有元素,这感觉很自然:或者更短
param
或者,您可以从数组元素中挑选出所有条目b
并更新它们。这将更接近您自己的命令,即b
无条件更新第一个元素:或者更短一点,