Jq将json中的单词替换为

Jq将json中的单词替换为,json,jq,edit,Json,Jq,Edit,下面有一个json,我需要获取数据部分中键“toModify”的值。还想用另一个值修改key(toModify)值,例如:hello1234567到xyz。我们如何使用jq来做到这一点 { "items": [ { "source": { "id": "12334" }, "data": { "name": "test", "value": "test",

下面有一个json,我需要获取数据部分中键“toModify”的值。还想用另一个值修改key(toModify)值,例如:hello1234567到xyz。我们如何使用jq来做到这一点

{
  "items": [
    {
      "source": {
        "id": "12334"        
      },
      "data": {
        "name": "test",
        "value": "test",        
        "cData": [
          {
            "key": "keOne",
            "value": "hello"
          },
          {
            "key": "toModify",
            "value": "hello1234567"
          }
        ]
      } 
    }
  ]
}

您的输入,特别是
cData
键的值,看起来是为配合
to\u条目
from\u条目
而定制的

$ jq '.items[0].data.cData |= (from_entries | .toModify = "xyz" | to_entries)' tmp.json
{
  "items": [
    {
      "source": {
        "id": "12334"
      },
      "data": {
        "name": "test",
        "value": "test",
        "cData": [
          {
            "key": "keOne",
            "value": "hello"
          },
          {
            "key": "toModify",
            "value": "xyz"
          }
        ]
      }
    }
  ]
}

需求有点粗略,但以下内容在这种特定情况下产生了所需的结果,并说明了一种方法:

.items[].data.cData
  |= map(if .key == "toModify" then .key = "MODIFIED" else . end)

到目前为止你试过什么?你查过类似的问题吗?你读过教程吗?警告:建议的解决方案假设键名是不同的。啊,是的,希望如此:)我尝试过使用
select(.key==“toModify)
,但并没有真正去追求它;我相信这会让你在保留重复项的同时更改每个对象。