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

如何用jq查询获取与name、role关联的bar、baz并输出为CSV

使用jq从JSON提取指定字段并输出CSV格式

嘿,我来帮你搞定这个需求!要从example.json里提取关联name、role的bar、baz字段,还要包含名为this的对象名称并输出标准CSV,用jq就能轻松实现。

基础实现命令

假设你的JSON是顶级数组结构(如果是嵌套结构,后面会说明调整方式),直接用这条命令:

jq -r '
# 筛选出name为"this"的对象
.[] | select(.name == "this") |
# 把需要的字段打包成数组,转成CSV格式
[.name, .role, .bar, .baz] | @csv
' example.json

命令拆解说明

  • -r:让jq输出原始字符串(而非JSON格式的带引号字符串),确保CSV输出符合规范
  • .[]:遍历JSON中的顶级数组元素(如果你的对象列表在嵌套键下,比如.data[],替换成对应路径即可)
  • select(.name == "this"):精准筛选出名称为this的目标对象
  • [.name, .role, .bar, .baz]:把需要的字段按顺序存入数组,方便后续转CSV
  • @csv:jq内置过滤器,自动处理CSV的引号、特殊字符转义,输出标准CSV行

示例演示

比如你的example.json内容是:

[
  {
    "name": "this",
    "role": "admin",
    "bar": "prod-value",
    "baz": "2024-05-20",
    "extra": "不需要的字段"
  },
  {
    "name": "that",
    "role": "user",
    "bar": "test-value",
    "baz": "2024-05-19"
  }
]

运行命令后会输出:

"this","admin","prod-value","2024-05-20"

带表头的CSV输出

如果需要同时输出表头,调整命令即可:

jq -r '
# 先输出表头行
["name", "role", "bar", "baz"] | @csv,
# 再输出数据行
.[] | select(.name == "this") | [.name, .role, .bar, .baz] | @csv
' example.json

输出结果会包含表头:

"name","role","bar","baz"
"this","admin","prod-value","2024-05-20"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:07:33