打开或粘贴 CSV 文件,调整选项时 JSON 结果会实时显示在旁边。默认情况下所有值都保持为字符串,所以 00731 和 20 位的 ID 都会原样输出;只有当某列确实应该变成 JSON 数字和 true/false 时,才开启数字识别。文件在你的浏览器中转换,不会上传。
如何把 CSV 转换为 JSON
- 打开
.csv、.tsv或.txt文件,拖到工具上,或粘贴数据。分隔符以及 UTF-8、UTF-16 的字节顺序标记(BOM)会自动识别;如需其他分隔符,或 Windows-1252、Shift_JIS、GB18030 等旧编码,请在 导入设置 中选择。 - 选择 JSON 结构。预览显示的是下载文件中前 200 行的实际输出。
- 设置 值类型、空单元格、嵌套和缩进,然后点击 下载 JSON 或 复制。
要用相同设置转换多个文件,请选择 批量转换多个文件,并一次选中所有文件:每个文件依次转换,结果打包成一个 ZIP 下载。
各选项的作用
| 对象数组(每行一个对象) | 每行一个对象,以表头为键:[{"sku": "00731", …}]。这是大多数 API 和 JavaScript 代码期望的结构。 |
|---|---|
| 二维数组(第一项为表头) | 先是表头行,然后每行一个数组。输出最小,并明确保留列的顺序。 |
| 按列分组的数组对象 | {"sku": ["00731", "00732"], …},便于图表库和数据框(data frame)工具使用。 |
| JSON Lines(每行一个对象) | 每行一个 JSON 对象(JSON Lines),外面没有数组。适合日志管道、BigQuery 导入和逐行处理。 |
| 所有值都保留为文本 | 每个单元格都变成 JSON 字符串,与文件中的写法完全相同。这是默认选项。 |
| 识别数字和 true/false | 只有当某列所有非空值都是能无损转换的普通数字时,该列才会变成 JSON 数字:没有前导零、有效数字不超过 15 位、不使用逗号小数。true/false 列会变成布尔值。日期仍为字符串。 |
| 空单元格 | 写成 ""、null,或在该对象中省略这个键。 |
| 把带点号的列名转为嵌套对象 | user.name 和 user.email 会变成 {"user": {"name": …, "email": …}}。如果某个名称既是值又是父级(user 和 user.name),这些列保持平铺,工具会给出提示。 |
特殊数据如何处理
- 值内被引号括起的逗号、引号(
"")和换行按 RFC 4180 读取,并写成普通的 JSON 字符串转义(\n、\")。 - 表头名称完全按原样使用,包括空格和中文等非拉丁文字。空白表头会变成
Column 3,重复表头变成name (2),因此不会有值被覆盖。 __proto__或constructor这样的表头会作为普通键写出。- 如果某行的值比表头多,多出的部分会使用名为
Column 4、Column 5… 的键;比表头短的行会得到空值。不会丢弃任何内容。 - 带类型的输出绝不会把
0012变成12,也不会把 19 位的订单号变成被舍入的浮点数:这样的列会保持为文本。
常见问题排查
限制与隐私
25 MB、10 万行或 200 万个单元格以内的文件可实时预览。更大的文件以流式方式转换:文件分块读取两遍(第一遍了解列和类型,第二遍写出),预览会被一条提示代替,下载内容包含所有行。单个输出文件最大 4 GB。
转换在当前标签页的后台线程中进行,所以页面保持流畅,点击 取消 即可停止。CSV 文件不会发送到任何服务器。
示例
一份商品清单,包含带前导零的 SKU 和引号内的逗号,使用默认设置转换(全部为文本、对象数组、2 个空格缩进)。如果开启 识别数字和 true/false,price 会变成 34.9,in_stock 会变成 true,而 sku 仍是 "00731"。
sku,name,price,in_stock 00731,"Desk lamp, brass",34.90,true 00732,Cable tidy,4.50,false
[
{
"sku": "00731",
"name": "Desk lamp, brass",
"price": "34.90",
"in_stock": "true"
},
{
"sku": "00732",
"name": "Cable tidy",
"price": "4.50",
"in_stock": "false"
}
]常见问题
为什么默认情况下数字带引号?
因为 CSV 没有数据类型:00731、1.50 和 2024-03-01 都只是文本。保持为字符串,才能保证 JSON 与文件内容完全一致。如果你确定某列是数量,再开启数字识别。
能在这里把 JSON 转回 CSV 吗?
暂时不能。这个页面只能把 CSV 和 TSV 转换为 JSON。
JSON Lines 和 NDJSON 是一回事吗?
实际上是的:两者都表示每行一个完整的 JSON 值,以换行符分隔。