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

如何用jq工具过滤JSON生成指定格式的连接状态报告?

jq处理JSON生成指定格式报告的解决方案

需求回顾

给定如下JSON文档:

{
  "connections": {
    "7MXYADN-WDXFLSC-3JBG57R-JHZXXYP-ZROJDED-YFQYNCL-WTHPSOQ-KHOLXAP": {
      "address": "",
      "at": "0001-01-01T00:00:00Z",
      "clientVersion": "",
      "connected": false,
      "crypto": "",
      "inBytesTotal": 0,
      "isLocal": false,
      "outBytesTotal": 0,
      "paused": false
    },
    "QYMGEAI-FXM6I6W-FQ574FL-XABEKPV-VK5M42T-AQ7TERD-VVEJ2F7-SFSRYQG": {
      "address": "",
      "at": "0001-01-01T00:00:00Z",
      "clientVersion": "",
      "connected": false,
      "crypto": "",
      "inBytesTotal": 0,
      "isLocal": false,
      "outBytesTotal": 0,
      "paused": false
    }
  }
}

需要生成以连接ID为键、对应connected字段值为值的JSON输出。

正确的jq命令

直接使用map_values函数可快速实现需求:

jq '.connections | map_values(.connected)' demo.json

若需更清晰地处理键值对转换,也可用to_entries与from_entries组合:

jq '.connections | to_entries | map({key: .key, value: .value.connected}) | from_entries' demo.json

两种命令都会输出目标格式:

{
  "7MXYADN-WDXFLSC-3JBG57R-JHZXXYP-ZROJDED-YFQYNCL-WTHPSOQ-KHOLXAP": false,
  "QYMGEAI-FXM6I6W-FQ574FL-XABEKPV-VK5M42T-AQ7TERD-VVEJ2F7-SFSRYQG": false
}

原命令问题分析

你之前使用的{ id: .connections | keys[] , status : .connections[].connected }会同时遍历所有连接ID和所有connected值,产生笛卡尔积,导致每个ID对应所有connected值,因此出现重复结果。

关于(value?)的含义

你提到的connection.(value?)并非jq语法,而是一种描述性占位写法:

  • connection.(value?)指connections对象下的任意键名(即那些长字符串形式的连接ID)
  • connection.(value?).connected对应每个键名指向对象中的connected字段值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 13:03:20