You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在未知键名时用jq获取JSON子对象的Status值?

如何用jq在未知键名的情况下获取provisionInfo下所有子对象的Status值

问题描述

我有一份命令生成的JSON数据,其中provisionInfo字段下的子对象键是随机字符串。目前已经能用jq -c '.provisionInfo'获取该层级对象,但想在不知道这些随机键名的情况下,提取所有子对象的Status值。示例JSON如下:

{
  "provisionInfo": {
    "2b66706e-237c-4d05-b3c0-31b03186b9e5": {
      "Status": "Up",
      "key": "value"
    },
    "3fb6886e-9877c-4d05-b39f-31b03186b9e5": {
      "Status": "Up",
      "key": "value"
    }
  }
}

解决方案

1. 提取所有Status值(纯值列表)

使用[]操作符展开provisionInfo下的所有子对象,直接访问.Status字段即可:

cat tmp.json | jq '.provisionInfo[].Status'

输出结果(带引号):

"Up"
"Up"

如果需要去掉引号输出纯文本,加上-r(raw输出)参数:

cat tmp.json | jq -r '.provisionInfo[].Status'

输出结果:

Up
Up

2. 保留键名与Status的对应关系

如果需要同时保留随机键名和对应的Status值,可以用to_entries将对象转换为键值对数组,再提取所需内容:

cat tmp.json | jq '.provisionInfo | to_entries | map({key: .key, status: .value.Status})'

输出结果:

[
  {
    "key": "2b66706e-237c-4d05-b3c0-31b03186b9e5",
    "status": "Up"
  },
  {
    "key": "3fb6886e-9877c-4d05-b39f-31b03186b9e5",
    "status": "Up"
  }
]

内容的提问来源于stack exchange,提问作者Burvil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 07:15:04