CSV 转 JSON 转换器
免费的 CSV 转 JSON 转换器,也能把 JSON 转成 CSV。能正确处理引号、字段内的换行以及用分号分隔的 Excel 文件,全部在浏览器中完成,不会上传任何内容。
它做什么
CSV 就是用文本写成的表格:每行一条记录,字段之间用分隔符隔开。它看起来很简单,正因如此,转换器常常悄无声息地出错。引号里的逗号是文本的一部分,而不是新的一列;引号里的换行是字段的一部分,而不是新的一条记录;而葡萄牙语、西班牙语、法语或德语版的 Excel 保存时使用分号,因为在这些地区逗号是小数点。本转换器按照 RFC 4180 的规则读取 CSV,通过寻找能让每一行列数都相同的那个符号来确定分隔符,并把每一行转换成以表头为键的 JSON 对象。反过来转换时,任何对象中出现过的每个键都会生成一列,而不只是第一个对象中的键。
使用方法
- 粘贴 CSV 或 JSON,或者打开一个文件。
- 检查选项:分隔符、表头行和数据类型。
- 按需要的方向转换,然后复制或下载结果。
常见问题
为什么我的邮政编码和 ID 保持为文本?
因为把它们转成数字会改变它们的值。007 会变成 7,而超过 16 位的 ID 会被 JavaScript 悄悄四舍五入成另一个数字。只有来回转换后保持不变的值才会变成数字;关闭类型转换即可让所有内容保持为文本。
我的 CSV 来自 Excel,结果所有内容都挤在一列里。
它很可能是用分号保存、却按逗号读取的。把分隔符保持为自动检测(它会检查四种常见分隔符),或者自己选择分号。
为什么 4,50 这样的小数被保留为文本?
在用分号分隔的文件里,4,50 很可能是四点五,但 1,500 既可能是一点五,也可能是一千五百,靠猜测会在不提示的情况下改变数值。请在你自己的程序中转换它们,在那里你知道它到底是哪一种。
嵌套对象是如何变成列的?
开启展开后,{"address": {"city": "Recife"}} 会变成名为 address.city 的一列。列表,以及关闭展开时的对象,会以 JSON 文本的形式写入单元格,因此不会丢失任何内容。
为什么要防范公式?
电子表格程序会把以 =, +, - 或 @ 开头的单元格当作公式,而公式可以从互联网获取数据或执行命令。如果数据来自用户或某个网站,请在用 Excel 打开文件之前开启防护。真正的负数不受影响。
RFC 4180 — CSV
Wikipedia — Comma-separated values
OWASP — CSV Injection