CSV 转 JSON 在线转换

粘一份 CSV,拿到 JSON,四种结构任选。转换在本页完成,十万行的文件也没问题,而且一个字节都不会上传。

输入

The only part of this site that uses a server. The address is sent to it so the page can be fetched, because a browser is not allowed to fetch someone else's page itself. Your own files are never involved.

这里不上传任何东西,解析在本页完成。
编辑
在上面粘贴或上传内容,表格会显示在这里。
输出DataMarkupDocumentsCodeSchemasImages

有表格可以转换时,结果会显示在这里。

CSV 是什么

CSV 是纯文本文件,一行一条记录,字段之间用逗号分隔。没有类型,没有格式,也没有第二个工作表。所有值在被下游程序解释之前都只是文本。

几乎所有数据库、分析工具和电子表格软件都能读写它,所以导出功能默认给的就是它。

JSON 是什么

JSON 是描述嵌套数据的文本格式:带键名的对象、数组、字符串、数字、布尔值和 null。它没有日期类型,也没有注释语法。

所有 Web API、大部分配置文件,以及任何跟 JavaScript 打交道的东西。

CSV 转成 JSON 时会发生什么变化

读 CSV 要先猜三件文件本身没有写明的事:用什么字符分隔字段、引号怎么处理、字节是什么编码。这里会从前几行推断分隔符,正确处理引号内包含逗号和换行的字段,并按 UTF-8 读取。

结构由你选。对象数组是默认值,也是大多数代码期望的形式。二维数组体积更小。每列一个数组适合图表库。以第一列为键的对象适合做查表。

每一行变成一条记录。表头成为键名,每行成为一个持有这些键的对象。

空单元格需要你做一个决定,因为 CSV 表示「没有值」只有一种写法,JSON 有三种:空字符串、null,或者干脆不要这个键。默认是空字符串,因为它能来回转换而不失真。

重复的表头名在 JSON 对象里会撞键,所以第二个会加后缀。两个都叫 name 的列会变成 name 和 name_2,而不是一个悄悄覆盖另一个。

示例

三行数据,其中有以零开头的编号、含逗号的值、含引号的值,以及一个空单元格。格式之间的差异主要就出现在这四个地方。

CSV 输入
id,name,role,started,hours
007,Halima Yusuf,"Analyst, data",2024-03-15,38.5
012,"Jonah ""Jo"" Pryce",Engineer,2025-11-02,
104,Wei Chen,Manager,2023-06-30,40
JSON 输出
{
  "staff": [
    {
      "id": "007",
      "name": "Halima Yusuf",
      "role": "Analyst, data",
      "started": "2024-03-15",
      "hours": "38.5"
    },
    {
      "id": "012",
      "name": "Jonah \"Jo\" Pryce",
      "role": "Engineer",
      "started": "2025-11-02",
      "hours": ""
    },
    {
      "id": "104",
      "name": "Wei Chen",
      "role": "Manager",
      "started": "2023-06-30",
      "hours": "40"
    }
  ]
}

常见问题

怎么把 CSV 转成 JSON?

把 CSV 粘进上面的框,或者把文件拖进去。在表格里核对一下,然后从输出面板复制或下载 JSON。一步就够了,数据始终不离开你的浏览器。

为什么我的 CSV 打开后所有数据都挤在一列里?

文件用的分隔符跟你的表格软件预期的不一样。中文版 Excel 按系统的“列表分隔符”来拆分,如果导出文件用的是逗号而系统设的是分号,就会不拆。在导入时手动指定分隔符即可。

为什么我的编号前面的零不见了?

数字识别把文本 007 变成了数字 7。正因为如此,这里默认不开启数字识别;即使开启,以零开头后面还跟数字的值也会保持为文本。

CSV 里的数字会变成 JSON 数字吗?

只有在你打开数字识别的时候才会。默认关闭,因为 CSV 本身没有类型,猜错了就会把编号毁掉:007 变成 7,电话号码变成浮点数。即使开启,以零开头的值也会保持为文本。

文件大小有限制吗?

没有。处理是在你自己的机器上完成的,所以限制来自你的内存而不是上传额度。几万行的文件一两秒就转完了。

我的数据会被上传吗?

不会。解析和生成都是本页的 JavaScript 做的。你可以一边转换一边看浏览器的网络面板,会看到什么都没有发出去。

相关转换

其他语言: English