使用jq命令更改JSON文件中的值需要一些帮助。
错误:
[jenkins@devops-dev-02 New]$ jq 'map(if .Tags[11].Key == "Period" then .Tags[11].Value = "Weekly" else . end)' create_snapshot.json
jq: error (at create_snapshot.json:54): Cannot index string with string "Tags"
[jenkins@devops-dev-02 New]$JSON文件:
{
"DBSnapshotIdentifier":"snapshot-myrds-backup-1",
"DBInstanceIdentifier":"myrds",
"Tags":[
{
"Key":"Name",
"Value":"snapshot-myrds-backup-1"
},
{
"Key":"Application",
"Value":"myapp"
},
{
"Key":"Environment",
"Value":"Dev and QA"
},
{
"Key":"Period",
"Value":"Daily"
}
]
}发布于 2021-08-29 04:02:55
当您通过字典调用map()时,您只对它的值进行操作,将键丢弃。值"snapshot-myrds-backup-1"没有.Tags,也不能接受不存在的Tags条目的第11项。
你想要的是:
.Tags |= map(if .Key == "Period" then .Value = "Weekly" else . end)map()通常用于遍历数组;对于JSON对象,map_values()通常用于对对象的值进行“映射”,同时保留键,但值映射到empty的键除外。
https://stackoverflow.com/questions/68969718
复制相似问题