使用jq如何批量修改JSON中root下所有嵌套子对象的leaf字段值
解决方案
你可以直接使用如下jq命令完成转换:
jq '.root[].leaf = "updated"' 输入文件.json
命令说明
.root定位到JSON顶层的root节点[]遍历root节点下的所有直接子节点.leaf = "updated"将遍历到的每个子节点下的leaf字段赋值为固定字符串"updated"
jq的赋值操作默认会保留所有未被修改的字段,因此JSON中another-root、foo等其他节点内容都会保持原样,完全符合需求。
如果需要避免给原本没有leaf字段的root子节点新增字段,可以使用带判断的变种命令:
jq '(.root[] | select(has("leaf"))).leaf = "updated"' 输入文件.json
内容的提问来源于stack exchange,提问作者Shang Jian Ding
相关产品推荐
相关产品推荐

