如何在JQ中返回具有一个更改属性的输入JSON

bjg7j2ky  于 2023-03-04  发布在  其他
关注(0)|答案(1)|浏览(101)

我试图让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": {}
}
gkl3eglg

gkl3eglg1#

这将返回带有更新值的整个对象

(.projects[] | select(.name == "project1").autoplan.enabled) |= true

select()周围的()使|=不更新整个对象的值,而只更新选定对象的值

相关问题