使用 jq 更新 JSON 数组的数组元素

问题描述 投票:0回答:1

我有一个 JSON 对象,想要将数组元素“role[test09]”更新为“role[hello]”,但我没有索引号。我尝试了一些方法,但不知何故无法弄清楚。

我怎样才能用 jq 做到这一点?

这是我的 JSON 对象。

    {
      "run_list": [
        "role[test01]",
        "role[test09]",
        "role[test05]"
      ]
    }

更新后的对象应该如下所示

    {
      "run_list": [
        "role[test01]",
        "role[hello]",
        "role[test05]"
      ]
    }
arrays json jq
1个回答
0
投票

明确提供的旧值和新值的简单替换是通过迭代和选择遍历到所需的项目,然后将其用作分配的 LHS:

jq '(.run_list[] | select(. == "role[test09]")) = "role[hello]"' input.json

演示

更进一步,您可以使用

--arg
选项导入字符串值。您还可以进行详细的更新,例如
|= sub("test09"; "hello")
。如果您提供有关所需更换的情况的更多详细信息,您可以获得更适合您的特定需求的回复。

© www.soinside.com 2019 - 2024. All rights reserved.