如何用jq将JSON一级键映射到嵌套的latest字段值?
使用jq提取JSON对象中嵌套的latest字段值
假设你有这样的JSON输入:
{ "foo": { "current": "0.15.14", "wanted": "0.15.14", "latest": "0.16.4" }, "bar": { "current": "8.27.0", "wanted": "8.27.0", "latest": "8.29.0" }, "baz": { "current": "27.1.5", "wanted": "27.1.5", "latest": "27.1.6" } }
(注意:原输入里每个嵌套对象最后一个字段带有多余逗号,严格JSON规范不允许这种写法,使用前建议先删除这些逗号,避免jq报错)
想要转成下面的结构:
{ "foo": "0.16.4", "bar": "8.29.0", "baz": "27.1.6" }
直接用这条jq命令就能实现:
jq 'with_entries(.value = .value.latest)'
命令解释
with_entries():遍历JSON对象的每一组键值对,对每个条目进行自定义处理.value = .value.latest:把每个条目里的value(也就是原来的嵌套对象)替换成该对象内的latest字段值
如果你的JSON内容存在本地文件中(比如命名为input.json),可以这样执行命令:
jq 'with_entries(.value = .value.latest)' input.json
内容的提问来源于stack exchange,提问作者Mr.
相关产品推荐
相关产品推荐

