JSON 转 CSV 转换器
在浏览器中将 JSON 转换为 CSV。支持 RFC 4180、Excel-EU、TSV、Pipe 预设。可展平嵌套或字符串化。100% 隐私,无需上传。
选项 · , · auto · LF · header · no BOM · flatten
什么是 CSV?为什么要从 JSON 转换?
CSV(Comma-Separated Values,逗号分隔值)是计算领域历史最悠久、支持最广泛的表格数据格式 — 每一款电子表格应用、每一个数据库、每一个分析工具,以及大多数编程语言都将 CSV 视为一等公民。相比之下,JSON 是 API 响应、配置和结构化数据交换的通用格式。在两者之间转换是数据工程中最常见的杂活之一:你从 API 或 NoSQL 数据库收到 JSON,需要 CSV 来加载到 Excel 进行分析、通过 COPY 加载到 Postgres 表,或加载到 BigQuery / Snowflake 数据仓库。本工具就是为这条转换路径而生,并能处理大多数在线转换器搞砸的四种场景。
与典型的在线转换器相比,本工具有四个重要差异点:
**1. RFC 4180 状态机解析器。** CSV 看起来简单,但引号规则非常微妙:用双引号包裹的字段可以包含逗号、内嵌换行符以及转义的双引号(加倍为 "")。简单的按逗号分割解析器会在真实数据上崩溃 — 含逗号的地址、多行文本字段、含引号的引号值都会出错。本工具实现了遵循 RFC 4180(IETF 的 CSV 规范)的真正状态机解析器,在两个方向上都能正确处理带引号字段、内嵌分隔符、内嵌行结尾和转义引号。输出可在 Python 的 csv 模块、PostgreSQL COPY、AWS S3 SELECT 以及任何兼容解析器之间往返。
**2. 展平单向 / 字符串化可逆。** 嵌套 JSON 与 CSV 的扁平表格形状根本不兼容,大多数转换器在遇到嵌套对象或数组时会静默破坏数据。本工具给你明确的选择:展平模式生成点分隔键(customer.address.city)和索引键(items.0.sku),实现最干净的电子表格布局 — 在 Excel 中可读,但对往返有损。字符串化模式将数组和对象作为 JSON 保留在单个单元格中 — 不够美观,但完全可往返:当反向转换搭配「推断类型」时,CSV → JSON → CSV 会产生完全相同的数据。根据目标选择:在 Excel 中分析(展平)或流水线往返(字符串化)。
**3. 大整数检测。** JavaScript 的 Number 类型使用 IEEE 754 双精度,会对超过 2^53 - 1(9007199254740991)的整数静默四舍五入。这会咬伤真实的 JSON:Twitter snowflake ID、Discord ID、MongoDB Long 字段以及 Kubernetes resourceVersion 都是超出安全范围的 64 位整数。大多数基于浏览器的 JSON 工具会在没有任何警告的情况下静默生成错误数字。本工具在解析过程中会检测大整数值,显示列出受影响字段的警告横幅,并在 CSV 输出中将原始数字保留为字符串,让 Excel 和 Google Sheets 不会将其截断为科学计数法。
**4. 100% 浏览器端隐私。** 你的 JSON 数据 — 通常包含用户 PII、内部数据库导出、嵌入在负载中的 API 密钥以及生产密钥 — 永远不会离开你的浏览器。不会向任何服务器发送数据、不会记录、也不会有捕获输入的分析。你可以在浏览器的「网络」标签中验证。这是在线工具中处理敏感数据的唯一安全方式。点击「交换」查看反向,或在你的目标是 YAML 时使用我们的配套 JSON 转 YAML 转换器。需要在转换前验证 JSON?请试试我们的 JSON 格式化工具。
CSV 的优势是普适性和简洁性:每个工具都能读取它、解析器极小、文件格式在任何文本编辑器中都人类可读。它的弱点是缺乏类型信息(在你告诉解析器之前,所有内容都是字符串)、没有原生嵌套结构支持,以及区域特定的怪癖(Excel-EU 分号、Windows CRLF 与 Unix LF)。JSON 的优势恰恰相反:精确的类型、原生的嵌套,以及在任何地方都能一致解析的严格规范。正确的工具取决于消费方:人类阅读电子表格 → CSV,机器消费 API → JSON。本转换器在两个方向上都处理了这座桥梁。
// Input JSON
[
{ "id": 1, "name": "Alice", "role": "admin" },
{ "id": 2, "name": "Bob", "role": "editor" }
]
// Output CSV (RFC 4180 preset: comma + CRLF + no BOM)
id,name,role
1,Alice,admin
2,Bob,editor
// Same input with Stringify mode + nested data
[
{ "id": 1, "tags": ["a", "b"] }
]
// Becomes
id,tags
1,"[""a"",""b""]" 核心功能
符合 RFC 4180
遵循 IETF CSV 规范的严格状态机解析器:正确处理带引号字段、内嵌分隔符、内嵌 CR/LF 以及转义双引号(加倍)。输出可干净地往返于 Python csv、PostgreSQL COPY 和 AWS S3 SELECT。
Excel、TSV 和 Pipe 预设
面向四种最常见目标的一键预设:RFC 4180(逗号 + CRLF)、Excel(分号 + CRLF + UTF-8 BOM,适配 EU 区域)、TSV(制表符 + LF)以及 Pipe(| + LF)。无需手动调整五个独立选项即可在格式之间切换。
展平或字符串化嵌套数据
明确的嵌套处理:展平生成点分隔键(customer.address.city),实现干净的电子表格分析;字符串化将数组和对象作为 JSON 保留在单个单元格中,实现无损往返。根据你需要的是 Excel 中的分析还是流水线往返来选择。
大整数检测
解析过程中检测超过 2^53 的整数,并在 CSV 中以字符串形式保留 — Twitter ID、Discord snowflake、MongoDB Long 字段和 K8s resourceVersion 保持精确,不会被 JavaScript 的 IEEE 754 数字类型静默四舍五入。
NDJSON 自动检测
行分隔 JSON(.ndjson、.jsonl)会被自动检测 — 直接粘贴流式日志、API 事件导出或数据湖输出,无需手动包裹为数组。每一行都成为 CSV 中的一行。
支持「交换」的双向转换
一个「交换方向」按钮即可原地翻转转换:输入变为 CSV、输出变为 JSON、当前文本保留。在两个方向上往返你的数据,在投入流水线前验证无损转换。
示例
REST API 响应
[{"id":1,"name":"Alice Chen","email":"alice@example.com","role":"admin"},{"id":2,"name":"Bob Garcia","email":"bob@example.com","role":"editor"},{"id":3,"name":"Carol Singh","email":"carol@example.com","role":"viewer"},{"id":4,"name":"Dan Müller","email":"dan@example.com","role":"viewer"}] 常见的 API 输出。开启表头后,即可获得整洁的表格 CSV,可直接用于 Excel。
GitHub Issues API
[{"id":1001,"title":"Bug: login redirects to 404","state":"open","labels":["bug","priority:high"],"user":{"login":"alice"}},{"id":1002,"title":"Feature: dark mode toggle","state":"open","labels":["enhancement"],"user":{"login":"bob"}},{"id":1003,"title":"Docs: update README","state":"closed","labels":["docs","good-first-issue"],"user":{"login":"carol"}}] 来自 /repos/{owner}/{repo}/issues。开启展平和表头 — user.login 会被展平为独立列。
MongoDB mongoexport
[{"_id":{"$oid":"6634a1b2c3d4e5f600000001"},"email":"alice@example.com","metadata":{"signupDate":"2026-01-15T10:30:00Z","preferences":{"newsletter":true,"theme":"dark"}}},{"_id":{"$oid":"6634a1b2c3d4e5f600000002"},"email":"bob@example.com","metadata":{"signupDate":"2026-02-20T14:15:00Z","preferences":{"newsletter":false,"theme":"light"}}}] Mongo 导出格式。如果计划进行 CSV→JSON 往返转换,请选择字符串化模式。
NDJSON 事件日志
{"event":"signup","user":"alice","ts":1715000000}
{"event":"login","user":"alice","ts":1715000060}
{"event":"checkout","user":"alice","ts":1715000300} 行分隔 JSON(.ndjson/.jsonl)会被自动检测 — 直接粘贴文件内容即可。
嵌套电商订单
[{"id":"ord-001","customer":{"name":"Alice Chen","email":"alice@example.com","address":{"city":"Seattle","country":"US"}},"items":[{"sku":"SKU-100","qty":2},{"sku":"SKU-205","qty":1}]},{"id":"ord-002","customer":{"name":"Bob Garcia","email":"bob@example.com","address":{"city":"Madrid","country":"ES"}},"items":[{"sku":"SKU-100","qty":1}]}] 展平模式输出点分隔键(customer.address.city、items.0.sku)。切换为字符串化可将数组/对象保留为单元格内的 JSON。
Postman 测试结果
[{"name":"GET /users returns 200","status":"pass","duration":142},{"name":"POST /users creates record","status":"pass","duration":287},{"name":"GET /users/999 returns 404","status":"fail","duration":98,"error":"Expected 404, got 500"},{"name":"DELETE /users/1 returns 204","status":"pass","duration":156}] Postman/Newman 测试导出。形状不一致的行(部分含 error)会用空单元格补齐 — 此时会出现 Schema notes 警告。
使用方法
- 1
粘贴 JSON
在上方输入框中输入或粘贴 JSON。工具接受对象数组、单个对象和 NDJSON(行分隔 JSON)— 自动检测。也可以点击「加载示例」试用 REST API 响应、MongoDB 导出或 NDJSON 事件日志等示例。
- 2
选择预设(或调整选项)
点击 RFC 4180(默认)、Excel(EU 分号 + BOM)、TSV(制表符)或 Pipe,一键切换到目标格式。打开选项面板可精细控制:分隔符、表头、引号(自动/始终)、行结尾(LF/CRLF)、BOM 以及嵌套(展平/字符串化)。
- 3
复制或下载 CSV
点击「复制」将 CSV 复制到剪贴板,或点击「下载」将其保存为 .csv 文件(TSV 预设时为 .tsv),可直接用于 Excel、Google Sheets、PostgreSQL COPY 或任何数据流水线。如需往返,点击「交换方向」原地将 CSV 转回 JSON。
常见转换问题
顶层值是基本类型
CSV 本质上是表格 — 由字段构成的行。单个数字、字符串或布尔值没有可投影的行/列结构。顶层 JSON 值必须是对象(单行表格)或数组(多行表格)。请先将基本类型包裹在对象或数组中。
42
[{"value": 42}] 形状不一致的数组(行的键不同)
当 JSON 数组中的行具有不同的键时(部分有 error 字段,部分没有),工具会跨所有行取所有键的并集,并用空值填充缺失的单元格。会出现 Schema notes 警告告知你列已被合并。这通常没问题,但如果下游工具要求严格的 schema,请验证输出。
[
{"name": "GET /users", "status": "pass"},
{"name": "GET /users/999", "status": "fail", "error": "500"}
] // Output CSV (note empty cell in row 1) name,status,error GET /users,pass, GET /users/999,fail,500
Excel 截断了大整数
Twitter snowflake ID、Discord ID 以及其他 64 位整数超出 JavaScript 的安全范围(2^53 - 1),在 JSON.parse() 读取时会丢失精度。即使 CSV 保留了原始数字,Excel 默认仍会以科学计数法显示。修复方法是双管齐下:在转换前将 ID 以字符串形式存储在 JSON 中,并启用 BOM(或使用 Excel 预设),让 Excel 将单元格保留为文本。
{"id": 9007199254740993}
// JavaScript reads as 9007199254740992 (precision lost) {"id": "9007199254740993"}
// CSV preserves the string; Excel displays exactly 内嵌逗号未加引号
如果你用简单的 join(',') 手工构建 CSV,任何含有逗号的字段(Smith, Jr. 或 1,234.56)都会破坏列边界 — 解析器会看到本应是一列的位置上有多余的列。本工具的「自动」引号模式遵循 RFC 4180,会自动用双引号包裹任何含分隔符、双引号、CR 或 LF 的字段。
name,role Smith, Jr.,admin // Parser reads 3 columns: "Smith", " Jr.", "admin"
name,role "Smith, Jr.",admin // Parser reads 2 columns: "Smith, Jr.", "admin"
Excel-EU 文件无法作为逗号 CSV 阅读
欧洲 Excel 区域设置(德国、法国、西班牙、意大利等)将逗号保留作小数分隔符,并使用分号作为字段分隔符。标准的逗号 CSV 打开时所有行都会塌陷到 A 列。修复方法是 Excel 预设:它切换为 ; + CRLF + UTF-8 BOM,让 Excel 在任何区域设置中都能正确解析文件。
id,name,price 1,Alice,1,234.56 // Excel-EU mis-parses 1,234.56 as two columns
// Excel preset output: ; + CRLF + BOM id;name;price 1;Alice;1234,56 // Excel-EU reads cleanly with comma decimal
NDJSON 未被检测到(输入形状)
NDJSON 自动检测要求每行一个有效的 JSON 值,且没有前导或尾随的数组方括号。如果你粘贴的是 JSON 数组的数组,或文件有前导 [ 和尾随 ],工具会将其视为单个 JSON 值,而不是 NDJSON。请去掉外层方括号,确保每一行都是一个独立的 JSON 对象。
[
{"event": "signup"},
{"event": "login"}
]
// Detected as a regular JSON array (works, but not NDJSON path) {"event": "signup"}
{"event": "login"}
// Each line is one JSON value — auto-detected as NDJSON 常见使用场景
- API 响应转电子表格
- 粘贴 REST API 响应(用户/订单/事件对象的数组),获取整洁的表格 CSV,可直接用于 Excel、Google Sheets 或 Numbers。这是最常见的场景 — 分析师和 PM 需要电子表格形态的数据,工程师从后端发出的是 JSON。
- MongoDB 导出转数据仓库
- 将 mongoexport JSON 输出(带 $oid 包装和嵌套元数据文档)转换为 CSV,用于加载到 BigQuery、Snowflake 或 Redshift。当下游工具支持单元格内 JSON 时,字符串化模式可无损保留嵌套形状。
- GitHub Issues 整理
- 从 /repos/{owner}/{repo}/issues 拉取 issues,粘贴 JSON,获取以 id、title、state、labels 和 user.login 为列的扁平 CSV。导入 Sheets 在 sprint 规划期间过滤、排序和分配。
- NDJSON 事件日志审查
- 来自 Cloud Logging、Datadog、Vector 或自有流水线的流式日志通常以 NDJSON(.ndjson、.jsonl)形式抵达。直接粘贴文件内容 — 自动检测 — 即可获取 CSV 进行临时分析,无需启动真正的 ETL 流水线。
- 电商订单提取
- 将嵌套订单 JSON(customer.address.city、items 数组)转换为扁平 CSV,用于财务、履约或欺诈审查。展平模式为每个叶子字段生成一列,可直接加载到 Excel 用于临时报表。
- Postman/Newman 测试报告
- Postman 测试导出包含形状不一致的行(部分含可选 error 字段)。粘贴 JSON,获取所有键取并集、缺失单元格已填充的 CSV — 非常适合在 Sheets 中与非工程师共享失败测试报告。
技术细节
- RFC 4180 状态机解析器
- 两个方向都使用遵循 RFC 4180 的真正有限状态机解析器。状态包括 UnquotedField、QuotedField、AfterQuote、RowEnd 和 EndOfInput。解析器能正确处理含分隔符的带引号字段、带引号字段内的内嵌 CR/LF、转义双引号(加倍如 "")以及尾随换行符。这能产生在 Python csv 模块、PostgreSQL COPY、AWS S3 SELECT 以及任何兼容解析器之间无损往返的输出。
- 大整数检测算法
- 在将 JSON 传给 JSON.parse() 之前(后者会通过 IEEE 754 静默地对大整数四舍五入),工具会对原始 JSON 文本运行正则扫描,查找超出安全范围(-2^53+1 到 2^53-1)的整数字面量。检测到时,受影响的字段路径会被记录,输出下方会出现「大整数」警告横幅。CSV 写入器会将这些值保留为字符串,确保通过 Excel、Google Sheets 以及任何文本敏感的下游消费方都能保持精确精度。
- 面向 Excel 的 BOM 与 UTF-8 编码
- 所有输入和输出均为 UTF-8。当 BOM 开关开启或选中 Excel 预设时,可选的 UTF-8 BOM(0xEF 0xBB 0xBF)会被添加到输出开头。Windows 上的 Excel 使用 BOM 来检测 UTF-8 编码 — 没有它,Excel 会回退到系统区域设置(美国为 Windows-1252、俄罗斯为 Windows-1251 等),破坏非 ASCII 字符。现代解析器(Python csv、Pandas、jq、PostgreSQL)通常不需要 BOM,并可能将其作为多余字符包含在第一个单元格的开头,因此非 Excel 流水线请关闭 BOM。
最佳实践
- 调整选项前先选预设
- RFC 4180、Excel、TSV 和 Pipe 预设可一次性设定五个选项(分隔符、行结尾、引号模式、BOM、表头)。先选最接近的预设,仅在需要时再微调单个选项 — 这能避免常见错误:切换了一个选项却忘了另一个(例如切换为分号但保留 LF,Windows 上的 Excel-EU 仍会误解析)。
- 分析用展平,往返用字符串化
- 当目标是 Excel、Sheets 或一次性分析时使用展平 — 点分隔键能产生最干净的电子表格布局。当你需要无数据丢失的 CSV → JSON → CSV 往返时使用字符串化 — 数组和对象会作为 JSON 保留在单个单元格中。中途切换并重新运行的代价很低;根据消费方选择。
- 仅在 Excel 场景使用 BOM
- Windows 上的 Excel 需要 UTF-8 BOM 才能正确检测编码。其他所有解析器(Python csv、Pandas、jq、PostgreSQL COPY、BigQuery)要么忽略 BOM,要么将其作为多余字符包含在第一个单元格的开头,破坏列名。流水线场景请关闭 BOM,仅当目标是 Excel 时才开启(或使用 Excel 预设)。
- 在 JSON 中将大 ID 保留为字符串
- Twitter snowflake ID、Discord ID、MongoDB Long 字段和 K8s resourceVersion 都是超出 JavaScript 安全范围(2^53 - 1)的 64 位整数。在转换前将其作为 JSON 字符串存储("id": "9007199254740993")— CSV 会精确保留原始数字,而数字字面量会被 JSON.parse() 静默四舍五入。
- 加载前验证行的形状
- 形状不一致的行(部分对象有键而其他对象没有)在输出中会被合并并填入空单元格,工具会显示 Schema notes 警告。对于严格 schema 的消费方(BigQuery、Redshift COPY),请在导出前验证所有行共享相同的键 — 或在流水线中显式处理缺失值。先用我们的 JSON 格式化工具检查输入形状。
常见问题
这个工具是做什么的?
我的数据会被上传到任何地方吗?
展平和字符串化模式有什么区别?
工具如何处理 Twitter ID 或 Snowflake 主键这类大整数?
为什么 Excel 把我的 CSV 全部显示在一列里?
本工具是否支持 NDJSON 或 JSON Lines?
什么是 RFC 4180?
为什么有些单元格被引号包裹,有些没有?
我能进行 CSV → JSON → CSV 无损往返吗?
如何获取 TSV 文件?
输入特别大时会发生什么?
支持哪些编码?
相关工具
查看所有工具 →Base64 解码与编码工具
编码和格式化
免费在线 Base64 解码编码工具。实时转换,支持中文和 Emoji,100% 浏览器端运行,数据不离开设备,无需注册。
CSV 转 JSON 转换器
编码和格式化
在浏览器中将 CSV 转换为 JSON。支持 RFC 4180、类型推断、表头行、大整数安全。100% 隐私,无需上传。
JSON Diff 对比
编码和格式化
在浏览器中即时对比两份 JSON。Side-by-Side 高亮 + RFC 6902 JSON Patch 输出,一键忽略 timestamps、IDs 等噪音字段。100% 隐私保护,零上传。
JSON 格式化与验证工具
编码和格式化
在浏览器中即时格式化、验证和美化 JSON。免费在线工具,支持语法验证、错误检测、压缩和一键复制,100% 隐私保护。
JSON Schema 验证器
编码和格式化
在浏览器中即时校验 JSON 是否符合任意 JSON Schema。支持 Draft 2020-12、2019-09 与 Draft-07,错误信息精确定位到 JSON Pointer 路径。100% 隐私保护,零上传、零账号、永久免费。
JSON 转 YAML 转换器
编码和格式化
粘贴 JSON 即时获得 YAML,浏览器端实时转换。支持 Kubernetes、Docker Compose 和 Terraform,提供 2/4 空格缩进、Norway 安全自动引号,100% 隐私保护,数据不离开设备。