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

jq提取JSON组件状态失败,如何修正以得到目标输出?

解决jq提取组件状态返回null的问题

问题分析

原命令的核心错误是路径定位偏差:你试图直接获取.value.components.status,但实际JSON结构中components下是多层嵌套的子组件(比如db节点下还有angleDS、argosleDS这类带status属性的子项),原路径无法匹配到这些深层的状态值,因此返回null。

修改后的jq命令

curl -s http://example:8080/external_indicator | jq -r '
  .components | to_entries[]
  | if .value | type == "object" and .value | has("status") then
      [.key, .value.status]
    else
      .value | to_entries[] | [.key, .value.status]
    end
  | [$id, $status] = .
  | "app_custom,\($id)=\($status) status_code=\(["DOWN","UP"] | index($status))"
'

命令说明

  1. 直接定位到顶层的components对象,遍历其所有键值对
  2. 针对每个条目做分支处理:
    • 如果当前值是带status的独立组件,直接提取组件名称和状态
    • 如果是包含子组件的嵌套对象(比如db),继续遍历其内部的子键值对,提取子组件的名称和状态
  3. 最后将提取到的内容格式化为你需要的字符串,status_code按规则映射:UP对应1,DOWN对应0

预期输出

执行修改后的命令后,会生成符合要求的结果:

app_custom,db=UP status_code=1
app_custom,angleDS=UP status_code=1
app_custom,argosleDS=UP status_code=1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 17:50:36