如何使用jq工具提取JSON字段并输出{key:value}格式对象
错误原因分析
你之前执行的命令出错的核心原因是:
- 对
.ssh_key对象调用to_entries方法后,会得到结构为{"key": "字段名", "value": "字段对应值"}的数组 - 遍历这个数组时,当匹配到
key为id的项,.value本身就是数字123,此时再执行.value.id相当于尝试从数字中索引id字段,自然会抛出报错。
正确实现命令
不需要用to_entries这么复杂的写法,直接提取对应字段构造新对象即可:
jq '.ssh_key | {id: .id}'
如果键名和原字段名一致,还可以进一步简写:
jq '.ssh_key | {id}'
如果需要输出紧凑无换行的格式,可以加-c参数:
jq -c '.ssh_key | {id}'
执行后就会直接输出你需要的{"id":123}结果。
内容的提问来源于stack exchange,提问作者mocart
相关产品推荐
相关产品推荐

