CSV 转 JSON 转换工具
粘贴 CSV,即可得到以表头行为键的 JSON 对象数组;如果没有表头,则得到数组的数组。切换方向,可将由扁平对象组成的 JSON 数组转换回 CSV。带引号的逗号、双写引号和字段内的换行符都能被正确读取,转换在您的浏览器中完成。免费,无需注册。
转换方向
如何使用 CSV 转 JSON 转换工具
- 1. 选择方向。 默认为 CSV → JSON;JSON → CSV 要求输入由扁平对象组成的 JSON 数组。
- 2. 设置选项。 分隔符可以自动检测,也可以固定为逗号、分号或制表符;在 JSON → CSV 方向下,自动检测会写出逗号。在 CSV → JSON 方向下,还可以选择 2 个空格、4 个空格或制表符缩进,以及第一行是否为表头。
- 3. 粘贴并转换。 按下 转换。如果出现问题——引号未闭合、JSON 无效、数组中的元素不是对象——会显示提示信息,而不是输出结果。
- 4. 复制或下载。 复制结果 会复制输出;下载按钮会将其保存为
data.json或data.csv。
如何读取 CSV
CSV 看似简单,实则不然:同一个文件可能使用逗号、分号或制表符,而字段中也可能包含与分隔符相同的字符。最接近规范的是 RFC 4180,它属于说明性文档而非正式标准。它规定,包含逗号、双引号或换行符的字段必须用双引号括起来,字段内的双引号则写成两个。本转换工具遵循这些规则,并增加了一些宽松处理:
- 带引号的字段。 以双引号开头的字段一直延续到闭合引号为止,因此可以包含分隔符、换行符,以及表示一个字面引号的
""。未闭合的引号会中止转换,并指出它开始的行。 - 行结束符。 LF、CRLF 和单独的 CR 都可以结束一行,空行会被跳过。
- 分隔符检测。 在自动模式下,转换工具只查看第一行,并选择出现次数最多的逗号、分号或制表符;若出现平局,则选择逗号。如果第一行比较特殊——例如只有一列或是标题行——请自行选择分隔符。RFC 4180 本身只使用逗号;分号在欧洲区域设置的电子表格导出文件中很常见。
- 所有内容都是文本。 转换工具不会猜测类型,因此
2020会变成字符串"2020"而非数字,空单元格会变成""而非 null。如果您的代码需要,请之后再转换类型。
示例
表头
name,note,year
第 1 行
"Smith, Jane","Said ""hello""",2020
第 2 行
Lee,short
结果
两个对象。Smith, Jane 的 note 为 Said "hello",year 为 "2020";Lee 的 note 为 short,year 为 ""。
Smith, Jane 中的逗号因为引号而留在同一个字段中,双写的引号则合并为一个。Lee 的那一行少了一个单元格,因此缺失的 year 变成空字符串;多出单元格的行会丢失多出的部分,因为没有表头来为它们命名。取消勾选 第一行是表头 后,同样的输入会变成数组的数组——[["name","note","year"],…]——而较短的行保持较短。
重复的表头名称会相互冲突:如果有两列都叫 id,后一列会覆盖前一列,前一列的数据就丢失了,因此请先重命名其中一列。
反向转换:JSON 转 CSV
反向转换要求顶层为一个数组,且其中所有元素都是对象。表头行是按首次出现顺序排列的所有键的并集,因此键不同的对象仍能对齐,缺失的值留空。数字和布尔值按原样写出,null 变为空单元格;任何嵌套的数组或对象都会以 JSON 文本的形式写入单元格并加上引号。如果数据是嵌套的,请先将其展平。包含分隔符、引号或换行符的单元格会加上引号,其中的引号会被双写,行之间以普通换行符分隔。
对于 [{"name":"Smith, Jane","year":2020,"tags":["a","b"]},{"name":"Doe","note":"two\nlines","year":null}],转换工具会写出表头 name,year,tags,note,第一行为 "Smith, Jane"、2020 和带引号的文本 ["a","b"];Doe 的那一行中 year 和 tags 为空,note 为带引号的两行文本。
您需要哪个工具?
| 您想要 | 使用 |
|---|---|
| 在 CSV 与 JSON 数组之间转换 | 本页 |
| 以表格形式查看 CSV,并复制为 HTML | CSV 转表格 |
| 从 CSV 生成 Markdown 表格 | Markdown 表格生成器 |
| 只保留 CSV 的部分列 | 列提取工具 |
| 检查或重新格式化 JSON 本身 | JSON 格式化工具 |
| 在 YAML 或 XML 与 JSON 之间转换 | YAML 转 JSON 转换工具、XML 转 JSON 转换工具 |
| 为论文排版 CSV 表格 | LaTeX 表格生成器、APA 表格生成器 |
常见问题
- 如何将 CSV 转换为 JSON?
- 将 CSV 粘贴到输入框中,保持选中 CSV → JSON,然后按下转换。勾选 第一行是表头 时,您会得到以表头名称为键的对象数组;不勾选时则得到数组的数组。复制结果,或将其下载为 data.json。
- 转换工具能处理带逗号或换行符的引号字段吗?
- 能。用双引号括起来的字段可以包含分隔符、换行符和双写引号,完全符合 RFC 4180 的描述。只有开引号而没有闭引号时,转换会中止,并指出该字段开始的行。
- 支持哪些分隔符?
- 逗号、分号和制表符,可以根据第一行自动检测,也可以手动选择。竖线分隔以及其他分隔符不受支持;可以先用列提取工具或查找替换将它们换成逗号。
- 为什么 JSON 中的数字是字符串?
- CSV 没有类型,转换工具也不会去猜测,因此每个值都以字符串形式输出,空单元格则输出为空字符串。这样可以原样保留
007或1e5这样的值;需要数字时,请在您自己的代码中转换类型。 - JSON 转 CSV 是如何工作的?
- 它需要一个由对象组成的 JSON 数组。每个对象成为一行,列是出现过的所有键,嵌套的对象或数组会以 JSON 文本的形式写入单元格。无效的 JSON 会在浏览器解析器给出位置时报告行号。
- 转换后的 CSV 在 Excel 中打开出错,这是为什么?
- 文件是不带字节顺序标记(BOM)的 UTF-8 编码,并使用您选择的分隔符。如果 Excel 所在地区使用分号,它可能会把所有内容放进一列;非英文字符也可能需要在导入向导中将编码设为 UTF-8。选择分号分隔符通常可以解决第一个问题。
- 我的数据会被上传到任何地方吗?
- 不会。两个方向的转换都在您的浏览器中完成,您粘贴的文本不会发送到 CitationEasy。下载文件也是在本地生成的。