如何使用jq正确解析指定JSON文件提取health字段?
jq提取vCenter服务健康状态字段方法
问题背景
现有存储vCenter服务列表的JSON文件,层级结构如下:
- 最外层对象:key为
value,对应值为服务列表数组 - 数组中每个元素为单个服务对象:包含
key(服务标识)和value(服务详情)两个字段 - 服务详情中
health字段即为要提取的健康状态值
错误尝试说明
你执行的命令报错核心原因为层级路径错误:
最外层是对象而非数组,直接使用
.[]会先拿到最外层value对应的数组,后续再用.value索引数组就会触发Cannot index array with string "value"错误
以下是错误命令示例:
# 错误命令1 jq '.[].value.health' vm_services.json # 错误命令2 jq '.[] | .value.health' vm_services.json
正确实现命令
提取所有服务的health值(无health字段的停止服务输出null)
jq '.value[] | .value.health' vm_services.json
仅输出存在健康状态的服务结果,过滤null值
jq '.value[] | .value.health | select(. != null)' vm_services.json
同时输出服务标识和健康状态,便于对应查看
jq '.value[] | {service: .key, health: .value.health} | select(.health != null)' vm_services.json
内容的提问来源于stack exchange,提问作者Tim Goodman
相关产品推荐
相关产品推荐

