jQuery有条件地在json数组中添加元素并打印整个修改后的文件

坎斯克

我有以下格式的json文件。如果.children []。type ==“ environmentApprovalTask​​”和.children []。role.name ==“ GCM批准人”并输出,我想在propDefs []中添加元素{“ test”:“ 2”}到新文件。我想要具有修改后内容的整个文件。.children []数组可能并不总是具有3个元素。

{
  "edges": [
    {
      "to": "de32e562319310b7b4fe3736e22009",
      "from": "99d5f0b278f08721adba7741b782d8",
      "type": "SUCCESS",
      "value": ""
    },
    {
      "to": "06916609ad7fd4127815be3f075c81",
      "from": "de32e562319310b7b4fe3736e22009",
      "type": "SUCCESS",
      "value": ""
    },
    {
      "to": "99d5f0b278f08721adba7741b782d8",
      "type": "ALWAYS",
      "value": ""
    }
  ],
  "offsets": [
    {
      "name": "99d5f0b278f08721adba7741b782d8",
      "x": -91,
      "y": 100,
      "h": 70,
      "w": 290
    },
    {
      "name": "06916609ad7fd4127815be3f075c81",
      "x": -5,
      "y": 420,
      "h": 80,
      "w": 120
    },
    {
      "name": "de32e562319310b7b4fe3736e22009",
      "x": 69,
      "y": 240,
      "h": 70,
      "w": 240
    }
  ],
  "layoutMode": "manual",
  "type": "graph",
  "id": "d5d9c4c4-0c5f-4642-872c-ac892039eaa4",
  "name": "79e8b952-dd59-4cfd-9c0c-e6c08a81d4ca",
  "children": [
    {
      "type": "finish",
      "id": "833e959c-6825-413d-afc4-7b74c0a87c3e",
      "name": "06916609ad7fd4127815be3f075c81",
      "children": []
    },
    {
      "id": "e976041d-af9d-48cf-b838-735bb5efd483",
      "type": "envApprovalTask",
      "children": [],
      "name": "de32e562319310b7b4fe3736e22009",
      "roleRestrictionData": {
        "contextType": "ENVIRONMENT",
        "roleRestrictions": [
          {
            "roleId": "087175fb-5d38-42d1-b65a-2b6a6958bc21"
          }
        ]
      },
      "propDefs": [{"test": "1"}],
      "templateName": "ApprovalCreated",
      "commentRequired": false,
      "commentPrompt": "",
      "role": {
        "id": "087175fb-5d38-42d1-b65a-2b6a6958bc21",
        "name": "Approver",
        "isDeletable": true
      }
    },
    {
      "id": "513fbc6a-3c4a-4a10-9eb0-7dc893c69413",
      "type": "environmentApprovalTask",
      "children": [],
      "name": "99d5f0b278f08721adba7741b782d8",
      "roleRestrictionData": {
        "contextType": "ENVIRONMENT",
        "roleRestrictions": [
          {
            "roleId": "116b8cd5-e7e4-403d-9599-35fe25d3cba2"
          }
        ]
      },
      "propDefs": [],
      "templateName": "ApprovalCreated",
      "commentRequired": false,
      "commentPrompt": "",
      "role": {
        "id": "116b8cd5-e7e4-403d-9599-35fe25d3cba2",
        "name": "Manager Approver",
        "isDeletable": true
      }
    }
  ]
}

我对代码的最后尝试

cat file.json |jq '.|.children[]| select(.type=="envApprovalTask")|select(.role.name=="Approver") |.propDefs[.profDefs|length] |= .+ {"test" : "2"}'

这只会产生修改后的元素,而不会产生整个文件作为输出。请帮助我如何获得所需的输出。

米恰·波利托夫斯基(MichałPolitowski)

关于TIL中复杂任务的TIL jq这实际上有效:

(.children[] | select(.type=="envApprovalTask" and .role.name=="Approver") | .propDefs) |= .+[{"test":"2"}]

与您的版本唯一的不同是作业的左侧括号。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在JavaScript中有条件地在Array中添加元素

Scala:根据模式匹配有条件地在 Map 定义中添加元素

有条件地传递修改后的副本而不是const original变得难看

有条件地打印文本文件中的元素

Prettier ERB 有条件地添加元素类

使用jq有条件地将元素添加到json数组

有条件地删除从数组中的元素 - CakePHP的

在JSON Circe Scala中遍历所有节点后,有条件地添加字段

有条件地修改数组元素,而不求助于临时数组

如果有条件,如何在列中添加元素?

如何在具有条件的 DataFrame 中逐行添加元素?

C# MongoDb 有条件地更新文档中现有的数组元素并添加新元素

如何有条件地修改numpy多维数组的每个元素?

使用jq有条件地修改嵌套json

jq 1.5 有条件地将 json 文件添加到 Main json 文件中

如何有条件地将元素添加到jsonb数组?

有条件地添加或删除子元素

在 R 中有条件地添加列元素

有条件地操纵数组中元素的属性

数组:有条件地映射元素

有条件地在带有awk的JSON数组之类的文件中插入一行

jQuery:无法有条件地将类添加到子元素

有条件地在python中打印出行

Awk-根据不同行中不同元素的条件,有条件地打印特定行中的元素

如何使用Angular有条件地向元素添加属性?(不仅属性数据,整个属性)

如何有条件地向 Angular 6 中的 HTML 元素添加属性

有条件地在淘汰表中添加一个元素属性

有条件地将命名元素添加到列表中

如何有条件地将元素添加到R中的字符开头?