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

求助:如何使用JQ将指定JSON数据提取为CSV格式?

使用JQ从JSON提取指定格式CSV的解决方案

没问题,我来帮你搞定这个JQ提取CSV的需求!先梳理下你的JSON结构:最外层是values数组,每个元素包含resourceId和嵌套的property-content列表,我们需要把资源ID和指定几个statKey对应的值按顺序拼接成CSV行。

最终可用的JQ命令

直接用这段命令就能得到你想要的结果:

.values[] | [
    .resourceId,
    (.["property-contents"]["property-content"] | from_entries(.[] | {key: .statKey, value: .values[0]}) | [
        "config|name",
        "summary|guest|ipAddress",
        "summary|parentCluster",
        "summary|parentDatacenter",
        "summary|parentVcenter",
        "summary|runtime|powerState"
    ] | map(.[.]))
] | flatten | @csv

命令拆解说明

我一步步给你解释这段代码的作用,方便你后续调整:

  • .values[]:遍历最外层values数组里的每个资源对象。
  • .resourceId:先把资源ID作为CSV的第一列内容。
  • 处理property-content部分:
    • from_entries(.[] | {key: .statKey, value: .values[0]}):把每个statKey条目转换成键值对对象(因为你的示例里每个values只有一个元素,所以直接取第一个值)。
    • 指定statKey顺序数组:这里列出了你需要的6个statKey,确保输出的CSV列顺序完全匹配你的期望。
    • map(.[.]):按指定顺序提取每个statKey对应的值,形成一个子数组。
  • flatten:把包含resourceId和子数组的嵌套数组展开成一维数组。
  • @csv:把一维数组转换成标准CSV格式(自动处理字符串中的特殊字符,兼容性更好)。

测试结果

把你提供的示例JSON输入到这个命令中,输出结果为:

"xxxx-xxxx-xxx-8b16-xxxxxx","somebname.UNIVERSE.test.com","100.xx.5.xx","UFO-UFO","GALAXY-D123","X-RAY123","Powered On"

如果不需要引号包裹内容,可以把@csv换成join(","),不过@csv更符合通用CSV规范,适合后续工具解析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:34:35