如何转换 JSON 与 CSV
选择方向并粘贴源数据。JSON 转 CSV 要求顶层为对象数组;CSV 转 JSON 把首行当表头,并把非空单元格保留为字符串,避免猜测数字和日期。
- JSON 转 CSV 时提供对象数组,表头按所有记录中字段首次出现的顺序收集。
- 选择嵌套对象和数组是压缩为 JSON 文本,还是直接拒绝。
- CSV 可能被 Excel 等软件打开时,保持公式保护开启。
- CSV 转 JSON 时选择空单元格变为 null 或空字符串,并检查字段数和多行引号。
案例与预期行为
| 输入 | 输出 | 说明 |
|---|---|---|
[{"name":"Jane","age":30}] |
name,age
Jane,30 |
标量字段变成列,记录使用 CRLF 分隔。 |
[{"name":"Doe, Jane","note":"She said \"hi\""}] |
name,note
"Doe, Jane","She said ""hi""" |
逗号和双引号按 CSV 规则引用和转义。 |
name,note
Jane,"Line 1
Line 2" |
[{"name":"Jane","note":"Line 1\r\nLine 2"}] |
被引号包围的换行属于单元格内容。 |
name,value
泉, |
[{"name":"泉","value":null}] |
选择 null 策略后,空单元格变成 JSON null。 |
[{"cell":"=2+3"}] |
cell
'=2+3 |
启用保护时,公式样式内容会增加前导单引号。 |
[{"meta":{"ok":true}}] |
meta
"{""ok"":true}" |
嵌套值可作为 JSON 文本放入一个 CSV 单元格。 |
JSON 形状与表头生成
JSON 转 CSV 只接受一个顶层数组,数组每项必须是非 null 对象。转换器按记录顺序扫描字段,第一次出现时加入表头,因此列顺序稳定且贴近源数据。某条记录缺少字段时,对应单元格为空。
CSV 是表格,而 JSON 对象每行字段可以不同。字段集合过于分散会产生很多空列,导出前最好先按明确 Schema 归一化。CSV 导入时拒绝重复表头,因为同名列无法无歧义映射到对象属性。
- 顶层必须是对象数组。
- 表头是字段名并集,按首次出现排序。
- null 和缺失字段在 CSV 中变为空单元格。
RFC 4180 风格引号与换行
写出时使用逗号分隔字段、CRLF 分隔记录。字段包含逗号、双引号、回车、换行或首尾空白时,会被双引号包围;字段内部的双引号写成两个连续双引号。这是常见 RFC 4180 风格。
解析器接受 CRLF、LF 或 CR,并保留引号字段中的实际换行。未闭合引号、未引用文本中突然出现引号,以及闭合引号后出现非分隔字符都会报错。分号、制表符和自定义转义方言不在本页范围。
- 引号中的换行不会结束记录。
- 两个连续双引号表示一个字面双引号。
- 导出固定使用逗号和 CRLF。
空值、类型与嵌套策略
CSV 没有统一的 null 标记和类型信息。导入时,本工具把所有非空单元格保留为字符串,并允许选择空单元格变为 null 或空字符串。它不会把 00123 猜成数字,也不会自动解析布尔值和日期,从而保护前导零和本地化格式。
导出时字符串、有限数字和布尔值转成文本,null 与缺失字段为空。对象和数组可以压缩为单元格内 JSON,也可以按选项拒绝。字符串化便于传输,但不等于把嵌套数据规范化成关系表。
- 需要区分缺失与空文本时选择 null。
- 只需要全字符串模型时选择空字符串。
- 下游必须严格扁平时拒绝嵌套值。
电子表格公式注入
Excel、LibreOffice 等可能把以 =、+、-、@、制表符或回车开头的单元格解释为公式或命令。不可信数据进入这些单元格后,可能触发意外计算、链接或应用特定行为。因此导出默认在公式样式文本前增加单引号。
前导单引号会改变导出值,因此这是安全策略选择,不是透明编码。文件用于人工电子表格查看时应保持开启;只有接收方严格按数据处理且必须保留首字符时才考虑关闭。单纯给字段加 CSV 引号不能阻止公式执行。
- 保护同时应用于表头和数据。
- 检查危险首字符前会考虑前导空白。
- 仍应更新电子表格软件并限制不可信文件。
常见用途与数据复核
适合把小型 API 数据导出给分析人员、把表格样例转为 JSON 测试夹具、整理联系人或库存记录,以及排查第三方 CSV。数据越扁平、规模越小、列 Schema 越明确,结果越可靠。
转换后应检查表头、行数、空值、多行字段和嵌套 JSON 单元格。业务关键导入仍应由目标系统校验列允许列表和数据类型。超大数据应使用流式工具,避免把整个文件和输出同时放入浏览器内存。
- 生成带引号规则的 JSON 测试数据。
- 把 API 记录临时导出到表格。
- 验证逗号和换行转义。
- 发布前检查公式注入防护。
错误与兼容边界
导入会报告引号损坏、表头缺失或重复、行字段数与表头不一致。导出会报告 JSON 无效、顶层不是数组、数组项不是对象或嵌套值被拒绝。本工具不会自动修复参差行、合并重复列或猜测区域分隔符。
CSV 实现并不完全统一。有的软件使用分号、UTF-16、BOM、本地小数逗号或非标准引号。本页输出 UTF-8 文本、不主动添加 BOM,并采用逗号分隔的 RFC 4180 风格。导入旧系统前应实际测试。
- 不支持注释和多段表头。
- 解析成功不代表邮箱、日期或数字有效。
- 实际文件上限由浏览器内存决定。
与 JSON 和 YAML 工具的区别
JSON 格式化器保留嵌套结构,只改变展示;JSON 与 YAML 转换器也保留嵌套结构,只改变语法。CSV 必须投影到共享列,因此嵌套值需要明确策略。CSV 适合行列数据,不是 JSON 的通用替代。
需要 Schema 映射、事务和百万行导入时使用数据库工具;需要工作表、原生类型和公式时使用 XLSX 库。本页适合透明的小型文本转换,并故意关闭类型猜测,便于审计。