我试图让JQ返回一个与输入几乎相同的输出,只链接一个兄弟属性匹配字符串的属性。
输入:
{
"version": 3,
"projects": [
{
"name": "project1",
"autoplan": { "enabled": false }
},
{
"name": "project2",
"autoplan": { "enabled": false }
}
],
"workflows": {}
}
我已经接近以下内容:
jq '.projects[] | select(.name == "project1").autoplan.enabled |= true'
但问题是这只是单独返回项目(没有其他根属性),如下所示:
{
"name": "project1",
"autoplan": { "enabled": true }
}
{
"name": "project2",
"autoplan": { "enabled": false }
}
如何返回数据的原始结构,但使用更改后的值?我宁愿不必用返回的项重新组装数组,也不必手动指定每个原始属性。
我正在寻找以下内容:
{
"version": 3,
"projects": [
{
"name": "project1",
"autoplan": { "enabled": true }
},
{
"name": "project2",
"autoplan": { "enabled": false }
}
],
"workflows": {}
}
1条答案
按热度按时间gkl3eglg1#
这将返回带有更新值的整个对象
select()
周围的()
使|=
不更新整个对象的值,而只更新选定对象的值