跳转到正文

CSV 转 JSON 转换工具

粘贴 CSV,即可得到以表头行为键的 JSON 对象数组;如果没有表头,则得到数组的数组。切换方向,可将由扁平对象组成的 JSON 数组转换回 CSV。带引号的逗号、双写引号和字段内的换行符都能被正确读取,转换在您的浏览器中完成。免费,无需注册。

转换方向

如何使用 CSV 转 JSON 转换工具

  1. 1. 选择方向。 默认为 CSV → JSON;JSON → CSV 要求输入由扁平对象组成的 JSON 数组。
  2. 2. 设置选项。 分隔符可以自动检测,也可以固定为逗号、分号或制表符;在 JSON → CSV 方向下,自动检测会写出逗号。在 CSV → JSON 方向下,还可以选择 2 个空格、4 个空格或制表符缩进,以及第一行是否为表头。
  3. 3. 粘贴并转换。 按下 转换。如果出现问题——引号未闭合、JSON 无效、数组中的元素不是对象——会显示提示信息,而不是输出结果。
  4. 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,并复制为 HTMLCSV 转表格
从 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。下载文件也是在本地生成的。

相关工具

数据、标记语言与代码中的更多工具