gpt4 book ai didi

json - 使用变量编辑嵌套数组中的值

转载 作者:行者123 更新时间:2023-12-04 08:39:26 25 4
gpt4 key购买 nike

我有以下无法解决的 JQ 问题。给定 JSON:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:root"
},
"Action": "sts:AssumeRole"
}
]
}
我需要取值 .Principal.AWS并将其保存在变量 $orig 中或者其他什么,然后将该变量作为数组中的一个元素读取,该数组将成为新文档。
这几乎有效:
'.Statement[0]
| .Principal.AWS as $orig
| .Principal.AWS = [$orig] + ["foo", "bar"]'
但是,这样做会丢失版本和声明级别。同时,这样做几乎可以满足我的要求:
'(.Statement[] | .Principal.AWS) = ["foo", "bar"]'
所以我希望这也能工作,但它没有:
'(.Statement[] | .Principal.AWS as $orig | .Principal.AWS) = [$orig, "foo", "bar"]'
然后我得到一个无效的路径表达式错误。
如何更正此语法?预期的结果是:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": ["arn:aws:iam::111122223333:root", "foo", "bar"]
},
"Action": "sts:AssumeRole"
}
]
}

最佳答案

您只需要对已经做好的尝试进行简单的补充。更换 |update assignment并可选择分组到括号中 (..) . |=之后的部分从 . 重新创建对象并分配给 LHS 上的路径

.Statement[0] |= ( .Principal.AWS as $orig | .Principal.AWS = [$orig] + ["foo", "bar"] )
# ^^^

关于json - 使用变量编辑嵌套数组中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64633716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com