json - 使用 jq(bash 脚本)更新 JSON 文件
问题描述
需要一些帮助来使用 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"
}
]
}
解决方案
当你调用map()
一个字典时,你只对它的值进行操作,把键扔掉。该值"snapshot-myrds-backup-1"
没有.Tags
,您也不能获取该不存在Tags
条目的第 11 项。
你在这里想要的是:
.Tags |= map(if .Key == "Period" then .Value = "Weekly" else . end)
map()
通常用于遍历数组;对于 JSON 对象,map_values()
通常用于“映射”对象的值,同时保留键,除了那些值映射到empty
.
推荐阅读
- swift - 斯威夫特:检查图片网址是否已更改
- java - 我正在使用 Linux 子系统,但无法安装 Java 或 Jshell
- javascript - Angular Service 提供默认值?
- javascript - 在隐藏的 div 中发布变量
- javascript - 如果数据库中的数据返回更多无效
- elasticsearch - 在 Kibana 中,度量标准无法正确显示仪表类型
- php - 在 HTML2PDF 中自动创建新页面
- android - 触摸外部时弹出窗口不隐藏
- python - 长列表作为 set_xticklabels 输入的问题(未对齐)
- google-chrome - 在 DevTools 的性能选项卡中分析鼠标单击