乐闻世界logo
搜索文章和话题

How to convert arbitrary simple JSON to CSV using jq?

4 个月前提问
3 个月前修改
浏览次数5

1个答案

1

jq 是一个轻量级且灵活的命令行 JSON 处理器,它允许你以非常灵活的方式解析、过滤、映射和转换结构化数据。它特别适合用于将 JSON 数据转换为其他数据格式,例如 CSV。

转换步骤

要将 JSON 转换为 CSV,你可以遵循以下步骤:

  1. 分析 JSON 结构:首先要理解 JSON 的结构,确定你需要哪些字段。
  2. 编写 jq 过滤器:使用 jq 的查询语言来提取需要的数据字段。
  3. 格式化输出:将提取的数据格式化为 CSV 格式。
  4. 使用命令行重定向输出:将 jq 的输出重定向到一个 CSV 文件中。

具体例子

假设我们有以下 JSON 文件 (data.json):

json
[ { "name": "Alice", "age": 25, "email": "alice@example.com" }, { "name": "Bob", "age": 30, "email": "bob@example.com" } ]

我们想要将这个 JSON 转换为一个 CSV 文件,包含所有的字段(name, age, email)。我们可以使用以下 jq 命令:

bash
jq -r '.[] | [ .name, .age, .email ] | @csv' data.json > data.csv

命令解析:

  • jq -r: 运行 jq 并输出原始字符串,而不是 JSON 编码的字符串。
  • '.[] | [ .name, .age, .email ] | @csv': 这个过滤器做了几件事:
    • .[]: 把数组中的每一个元素取出来。
    • [ .name, .age, .email ]: 对于每个元素,创建一个包含 name, age 和 email 的新数组。
    • @csv: 将数组转换为 CSV 行。
  • data.json > data.csv: 将输出重定向到 data.csv 文件。

执行这条命令后,data.csv 文件包含以下内容:

shell
"Alice",25,"alice@example.com" "Bob",30,"bob@example.com"

这样,我们就成功地将 JSON 数据转换为了 CSV 格式。这个过程是非常灵活的,你可以根据实际需要调整 jq 过滤器来提取不同的数据或改变输出格式。

2024年8月9日 02:25 回复

你的答案