如何使用jq将JSON部分字段迁移至新子对象中?
使用jq重组JSON结构:将指定字段移入新子对象
需求说明
需要将原JSON中的beta和delta字段提取出来,放入新建的epsilon子对象中,同时保留其他字段不变:
原JSON结构:
{ "alpha": "...", "beta": [ ... ], "delta": { ... }, "gamma": "..." }
目标JSON结构:
{ "alpha": "...", "epsilon" : { "beta": [ ... ], "delta": { ... } }, "gamma": "..." }
实现命令
可以用以下jq命令完成该操作:
. + {epsilon: {beta, delta}} | del(.beta, .delta)
命令解释
. + {epsilon: {beta, delta}}:在原始JSON对象基础上新增epsilon字段,该字段的值是包含原beta和delta字段的子对象(jq支持直接用字段名快速构建对象)| del(.beta, .delta):通过管道符将前一步结果传入del函数,删除原对象中的beta和delta字段,避免字段重复
实际文件处理
如果要处理本地JSON文件(比如input.json)并将结果输出到新文件(output.json),可以执行:
jq '. + {epsilon: {beta, delta}} | del(.beta, .delta)' input.json > output.json
内容的提问来源于stack exchange,提问作者fbrereto
相关产品推荐
相关产品推荐

