向现有的JSON数组添加一个新元素

tr53

如何之后在逗号后面添加"arn:aws:iam::xxxxxxx:role/3""arn:aws:iam::xxxxxxx:role/2""arn:aws:iam::xxxxxxx:role/2"

前:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::xxxxxxx:role/1",
          "arn:aws:iam::xxxxxxx:role/2"
        ]
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::xxxxxxx:role/1",
          "arn:aws:iam::xxxxxxx:role/2",
          "arn:aws:iam::xxxxxxx:role/3"
        ]
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
伊尼安

不要尝试使用标准的文本处理工具(例如)来解析JSON文本awksed或者不要使用中的JSON模块来解析JSON文本perl,因为它们不支持JSON语法。jq是一个轻量级的JSON处理器,可让您即时处理内容。

例如,您的要求可以简单地写成

jq --arg new "arn:aws:iam::xxxxxxx:role/3" '.Statement[].Principal.AWS? += [$new]' json

如果要附加多个元素,则将arg创​​建为JSON blob

jq --argjson new '["arn:aws:iam::xxxxxxx:role/3", "arn:aws:iam::xxxxxxx:role/4"]' '.Statement[].Principal.AWS? += $new'

有关下载和使用该工具的说明,请参见下载jqjq手册中的用法教程。

如果内容在文件中,并且您要永久修改此文件,请使用就地编辑工具,例如spongeGNU moreutils包中提供的工具,您可以执行此操作

jq --arg new "arn:aws:iam::xxxxxxx:role/3" '.Statement[].Principal.AWS? += [$new]' json | sponge json

或使用类似POSIX的工具 mktemp

temp="$(mktemp)"
jq --arg new "arn:aws:iam::xxxxxxx:role/3" '.Statement[].Principal.AWS? += [$new]' json > "$temp" && mv "$temp" json

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将新元素添加到阵列或更新现有的一个(阵营状态)

在现有单元格数组的末尾添加一个新元素

向现有的JSON数组添加其他元素

向现有的 json 文件添加一个密钥

向列表中添加一个新元素

向Json数组添加新元素

向现有的GitHub Gist添加另一个文件

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

从另一个数组向现有对象数组添加新属性

将另一个对象添加到现有的JSON中

我想在现有的 json 文件中添加一个键和值对

向列表中添加一个新元素,并返回对该元素的引用?

python:从列表循环向现有字典添加一个元素

在现有元素旁边放置一个新元素

Java-向现有的HashMap键添加另一个String值而不覆盖?

向列表添加或求和一个值,直到条件不再有效,并在条件有效时创建一个新元素 Python

使用Java,如何在数组的开头向现有的json添加一些节点?

使用jq将新元素添加到现有JSON数组

从现有数组创建一个数组,并添加其他元素

向列表列表添加一个新元素(在R中)

无法将元素“LevelRoot”添加为文档的根:内容已经有一个现有的父文档

向现有的数组数组添加值

向现有的JavaScript对象添加子键元素

填充二维数组是添加一个新元素而不是一行

从数组列表向现有的Pandas DataFrame添加列

剥离 JSON 元素并向其添加一个新元素

如何添加一个空字符串作为现有数组的第一个元素?

Laravel 向 json 列内的数组添加一个元素

创建一个codemod将新元素添加到数组