首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jq (bash脚本)更新JSON文件

使用jq (bash脚本)更新JSON文件
EN

Stack Overflow用户
提问于 2021-08-29 03:52:10
回答 1查看 109关注 0票数 0

使用jq命令更改JSON文件中的值需要一些帮助。

错误:

代码语言:javascript
复制
[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文件:

代码语言:javascript
复制
{
   "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"
      }
   ]
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-29 04:02:55

当您通过字典调用map()时,您只对它的值进行操作,将键丢弃。值"snapshot-myrds-backup-1"没有.Tags,也不能接受不存在的Tags条目的第11项。

你想要的是:

代码语言:javascript
复制
.Tags |= map(if .Key == "Period" then .Value = "Weekly" else . end)

map()通常用于遍历数组;对于JSON对象,map_values()通常用于对对象的值进行“映射”,同时保留键,但值映射到empty的键除外。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68969718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档