正在加载,请稍候…

JSON 转 CSV 转换器:将数据导出为电子表格

将 JSON 数组转换为 CSV 格式,用于 Excel、Google Sheets 和数据分析工具。自动检测列标题,处理嵌套对象,支持一键下载。

JSON 转 CSV 转换器:将数据导出为电子表格

为什么将 JSON 转换为 CSV?

JSON 是 Web API 和配置的事实标准,而 CSV(逗号分隔值)是电子表格、数据分析和数据库导入的通用格式。在两者之间转换是一项基础的数据工程任务。

何时需要 JSON 转 CSV:

  • 将 API 数据导出到 Excel 或 Google Sheets 进行分析
  • 将 Web 应用程序数据加载到数据库表中
  • 从 JSON 结构的数据源创建报告
  • 与非技术利益相关者共享结构化数据
  • 将数据输入期望表格格式的机器学习管道

JSON 转 CSV 转换器:将数据导出为电子表格插图

JSON 结构与 CSV 映射

扁平 JSON 数组(简单情况)

[
  {"id": 1, "name": "Alice", "email": "alice@example.com"},
  {"id": 2, "name": "Bob", "email": "bob@example.com"}
]

直接映射为 CSV:

id,name,email
1,Alice,alice@example.com
2,Bob,bob@example.com

嵌套对象(挑战)

[
  {
    "id": 1,
    "user": {"name": "Alice", "age": 28},
    "address": {"city": "NYC", "country": "US"}
  }
]

处理嵌套的选项:

  1. 展平user.nameuser.ageaddress.cityaddress.country
  2. JSON 字符串化:将嵌套对象作为 JSON 字符串保留在 CSV 单元格中
  3. 忽略:省略嵌套对象

展平通常是分析的首选。

对象中的数组(挑战)

[
  {"id": 1, "name": "Alice", "tags": ["admin", "editor"]}
]

选项:

  1. 连接"admin,editor"(单个单元格中以管道或逗号分隔)
  2. 每个值一行:为每个 JSON 对象创建多行 CSV
  3. 多列tag1tag2

CSV 格式规范(RFC 4180)

JSON 转 CSV 转换器:将数据导出为电子表格插图

基本规则

  • 字段用逗号分隔
  • 记录用换行符分隔(RFC 4180 中为 CRLF)
  • 可选的标题行
  • 字段可以用双引号括起来
  • 引号内的字段可以包含逗号和换行符
  • 要包含双引号:""(通过双写转义)

常见变体

CSV 并非完全标准化。变体包括:

  • 分隔符:制表符(\t)、分号(;)、管道(|)代替逗号
  • 引号字符:单引号或无引号
  • 行尾:LF(Unix)与 CRLF(Windows)
  • 编码:UTF-8、带 BOM 的 UTF-8、Latin-1

Microsoft Excel 在许多欧洲区域设置中使用分号作为默认分隔符(其中逗号是小数分隔符),导致无数 CSV 解析问题。

处理特殊情况

空值

{"id": 1, "name": null, "email": ""}

Null 和空字符串都表示为空的 CSV 单元格,但语义不同。

布尔值

JSON 中的 truefalse 在 CSV 中变为字符串 "true" 和 "false",除非显式转换。

JSON 转 CSV 转换器:将数据导出为电子表格插图

数值精度

JSON 数字可以表示任意精度的浮点数。CSV 将其作为字符串传输。注意往返过程中浮点精度损失。

Unicode 和特殊字符

所有 Unicode 字符都应保留。包含逗号、引号或换行符的单元格必须正确引用。

程序化转换

JavaScript

function jsonToCsv(data) {
  const headers = Object.keys(data[0]);
  const rows = data.map(obj =>
    headers.map(h => JSON.stringify(obj[h] ?? '')).join(',')
  );
  return [headers.join(','), ...rows].join('\n');
}

Python (pandas)

import pandas as pd
import json

with open('data.json') as f:
    data = json.load(f)

df = pd.json_normalize(data)  # 处理嵌套对象
df.to_csv('output.csv', index=False)

命令行 (jq)

jq -r '["id","name","email"], (.[] | [.id, .name, .email]) | @csv' data.json

使用 JSON 转 CSV 转换器

我们的工具:

  1. 粘贴 JSON 数据 — 对象数组或单个对象
  2. 配置选项 — 分隔符选择、引号处理、嵌套对象策略
  3. 预览输出 — 下载前查看 CSV 表格
  4. 处理数组 — 选择如何表示数组值
  5. 下载 CSV — 获取文件,准备用于 Excel 或数据库导入
  6. 复制到剪贴板 — 直接粘贴到电子表格中

该工具自动处理边缘情况:正确引用包含逗号的字段、转义双引号,以及从不一致的 JSON 对象中保持列顺序一致。