json - 使用 JQ 将新字段插入特定对象
问题描述
我有一个如下所示的 JSON 文件:
{
"BackupPlanName": "backup-plan",
"Rules": [
{
"RuleName": "rule1",
"Lifecycle": {
"DeleteAfterDays": 35
},
"RuleId": "3e5ae513"
},
{
"RuleName": "rule2",
"Lifecycle": {
"DeleteAfterDays": 365
},
"RuleId": "82c660c9"
}
]
}
我只需要将此键/值添加到 rule1:
"EnableContinuousBackup": true
如果我使用以下命令,我也会将它添加到每个对象:
jq '.Rules[].EnableContinuousBackup += true'
有了这个,它不会让我得到完整的 JSON:
jq '.Rules[] | select(.RuleName=="rule1") | .EnableContinuousBackup += true'
那么,我怎样才能让它工作,让我的 json 最终看起来像这样呢?
{
"BackupPlanName": "backup-plan",
"Rules": [
{
"RuleName": "rule1",
"Lifecycle": {
"DeleteAfterDays": 35
},
"RuleId": "3e5ae513",
"EnableContinuousBackup": true
},
{
"RuleName": "rule2",
"Lifecycle": {
"DeleteAfterDays": 365
},
"RuleId": "82c660c9",
}
]
}
解决方案
=
您需要将赋值运算符 ( , not )的右侧括+=
在括号中。
(.Rules[] | select(.RuleName == "rule1") .EnableContinuousBackup) = true
推荐阅读
- java - 错误:在类 singleInheritance.A 中找不到主方法,请将主方法定义为:public static void main(String[] args) 或 JavaFX
- abap - ALV 演示程序中缺少数据
- javascript - 如何使 css 仅影响 .js 中的列表项,而不影响我的 .html 中的列表项
- spring-boot - 如何在 Freemarker 中获取布尔变量 DEBUG?
- dns - Ubuntu 18.04 - 如何忽略离线 DNS 服务器?
- python-3.x - 计算真假
- git - 执行提交时,暂存区域(和暂存文件)会发生什么(除了文件被提交到存储库的事实)?
- python - 在远程主机中运行时,stdout 不打印任何内容
- git - `cherry-pick` 分支的所有提交
- c - malloc() 无法在 C 中的函数内分配内存