CSV 转 JSON

CSV 转 JSON,是把一行一条记录的 CSV 表格转成 JSON 数组:首行表头当 key,每行一个对象,拿到就能喂给接口。粘贴 CSV 或拖入 .csv 文件即可在浏览器本地转换——逗号、分号、制表符自动探测,带逗号引号换行的字段按 RFC 4180 还原,Excel 导出的 GBK 中文换编码即可读对。默认所有值保留为字符串,手机号、邮编开头的 0 不会被吃掉,需要数字和布尔时再打开类型推断。文件不上传服务器,免费不注册。

拖入 CSV 文件,点击选择
文件不上传 · 浏览器本地转换 · 也可直接粘贴 CSV

🔒 CSV 在你的浏览器内转换,未上传任何服务器。

如何使用CSV 转 JSON

1

把 .csv 文件拖进上方虚线框(也收 .tsv、.txt),或直接把 CSV 文本粘进下面的输入框。读文件时会先按 UTF-8 解码,发现大片乱码会提示并自动切到 GBK,看着中文正常了再往下走。

2

按需调四项设置:首行是否作为表头(不勾就用 field1、field2 命名,第一行也当数据)、分隔符(默认自动探测逗号/分号/制表符)、类型推断(默认关闭,全部按字符串输出)、美化输出(带缩进好读,关掉体积更小)。

3

点「转换为 JSON」,页面会显示转出了多少个对象、多少个字段,并预览前 4000 个字符;确认后点「下载 JSON」保存(文件名沿用源 .csv),或点「复制」直接粘进编辑器和接口调试工具。

关于CSV 转 JSON的常见问题

CSV 转 JSON 会把我的数据上传服务器吗?
不会。读文件、解析 CSV、生成 JSON 全部由浏览器里的 JavaScript 在你的设备上完成,页面不会把内容发往任何服务器,也不写入本地存储,关闭或刷新页面即清除。想自己验证:按 F12 打开开发者工具的「网络」面板再转一次,整个过程不会出现上传请求。含客户手机号、订单明细的表格也可以放心粘进来。
CSV 转 JSON 手机号前导 0 会被吃掉吗?
默认不会。工具默认关闭类型推断,所有单元格原样保留为字符串,013800138000、邮编 010001、工号 007 转出来还是带 0 的字符串。即使打开类型推断,带前导 0 的数字串也会被判为字符串而不转成数字——这正是很多人用 Excel 或 Python 直接转 CSV 时踩的坑:0 一旦被当数字读掉,后面再补就对不上原始数据了。
CSV 转 JSON 的类型推断要不要开?
要看这份 JSON 给谁用。开启后纯数字(无前导 0)转成 number、true/false 转成布尔,其余保持字符串,适合直接喂给程序做计算。有一类数据必须留意:18 位身份证号、雪花 ID 这种超过 16 位的长数字串没有前导 0,会被当数字处理,而 JavaScript 的数字精度只到 2^53,110101199003071234 转完会变成 110101199003071230,末位悄悄改掉。拿不准就保持关闭,全按字符串最保真。
CSV 转 JSON 中文乱码怎么解决?
在「源编码(文件)」里从 UTF-8 切到 GBK / GB2312 即可,预览区的中文立刻恢复正常。原因是 Excel 在 Windows 上「另存为 CSV」默认写的是 GBK 编码,而网页默认按 UTF-8 读,一个汉字的两个字节被拆开就成了问号和方块。工具读入文件时会自动检测,疑似乱码会提示并先按 GBK 试一次;若切换后仍乱,多半是文件本身在传输中被改坏了,重新导出一份再转。
CSV 没有表头怎么转成 JSON 数组?
取消勾选「首行作为表头」即可。此时第一行也当作数据,每列按位置命名成 field1、field2……例如「甲,上海」两行数据转出 [{"field1":"甲","field2":"上海"},…]。反过来说,如果你的 CSV 明明有表头却忘了勾选,表头文字会变成第一条记录,检查一下 JSON 的第一个对象就能发现。
CSV 表头有重复列名转 JSON 会覆盖吗?
不会丢数据。JSON 对象里同名 key 只能留一个,所以重复的列名会自动加后缀:表头「name,name」转出的 key 是 name 和 name_2,第三个同名列是 name_3;表头留空的那一列则命名为 field。这样每一列都能对上原表的位置。如果后续程序按固定字段名读取,转完先扫一眼 JSON 的第一个对象,确认没有出现意料之外的 _2 后缀。
CSV 字段里带逗号引号换行转 JSON 会错行吗?
不会。解析严格按 CSV 标准(RFC 4180):双引号包裹的字段内部允许逗号、换行,连续两个双引号表示一个真正的引号。像 "x,1↵2","他说""好""" 这样一行,会正确还原成 x,1 换行 2 和 他说"好" 两个值,不会被拆成四列或断成两条记录。所以带备注、带地址的表格可以直接转,不用先在别处替换掉逗号。
分号或 Tab 分隔的 csv 能转成 json 吗?
能,默认「自动探测」就够用。工具会数一遍第一条记录里引号外的逗号、分号、制表符,谁多用谁,数量相同时优先逗号——欧洲地区 Excel 导出的分号分隔 CSV、以及数据库导出的 .tsv 都能直接认出来。遇到第一行本身就很特殊(比如只有一列标题)导致猜错时,在「分隔符」里手动选逗号、分号或制表符即可。
CSV 转 JSON 后还能转回 CSV 表格吗?
可以。用本站的 JSON 转 CSV 把这里得到的数组转回表格,一条记录对应一行。有两处会有细微差别:一是空单元格在 JSON 里是空字符串 "",转回 CSV 仍是空格子,但和原来的 null 语义已经分不清;二是开过类型推断的数字、布尔会以裸值写回。想要往返尽量一致,就保持类型推断关闭。
手机上怎么把 CSV 转成 JSON?
用手机浏览器(iOS Safari、安卓 Chrome、微信内置浏览器都行)打开本页,从「文件」App 里选 .csv,或者长按复制 CSV 文本直接粘进输入框,转换同样在手机本地完成,不用装任何 App。微信里收到的 .csv 要先「用其他应用打开 - 保存到文件」再回本页选择。手机内存有限,几十 MB 的表格建议放到电脑上转。
CSV 转 JSON 一次能转多大的文件?
单个文件上限 100MB,超过会提示先拆分。实际体验里,几 MB、几万行的 CSV 在电脑上通常一两秒转完,手机会慢一些;转出的 JSON 通常比源 CSV 大不少,因为每一行都要重复写一遍字段名,关掉「美化输出」能省掉缩进和换行、体积明显更小。数据再大就按行切成几份分别转,或者交给本机的 Python、jq 处理。

CSV 转 JSON 的字段名和缺列是怎么定的

一句话:key 取首行表头,重名加 _2、空表头补 field,数据行比表头多出来的列补 field3、field4,缺的格子一律是空字符串。 下面几种常见的「不规整 CSV」,转出来分别长这样。

几种常见 CSV 在默认设置下转成 JSON 的结果
CSV 输入(首行为表头)转出的 JSON说明
id,name 1,甲{"id":"1","name":"甲"}常规情况:一行一个对象,值都是字符串
name,name,(第三列表头为空) 甲,乙,丙{"name":"甲","name_2":"乙","field":"丙"}重名列加 _2、_3;表头空着的列叫 field
a,b 1,2,3{"a":"1","b":"2","field3":"3"}数据行多出的第 3 列补名 field3,不会被丢掉
a,b 1,{"a":"1","b":""}缺值是空字符串 "",不是 null
甲,上海(取消勾选表头){"field1":"甲","field2":"上海"}不作表头时按列序命名,第一行也算数据
只有 a,b 一行提示「数据为空,没有可转换的内容。」有表头没数据行会明确报错,不生成空数组

最容易被忽略的是第四行:CSV 里的空格子、和写着 null 三个字母的格子,转成 JSON 之后一个是 ""、一个是 "null" 字符串,都不是 JSON 的 null。CSV 本身是纯文本,存不下「这里是空值」这层类型信息,需要区分空值的话,得在下游程序里自己约定。

CSV 转 JSON 什么时候该开类型推断

默认关闭是更稳的选择:全部按字符串输出,转出来的 JSON 和原表一字不差。要拿去做求和、比较、写入强类型字段时再打开, 打开后 1 变成数字 1、true 变成布尔 true,其余仍是字符串。

相关工具:想把 JSON 数组变回表格,用 JSON 转 CSV;源文件是 xlsx 而不是 csv,直接用 Excel 转 JSON;只想快速看看这份 CSV 有多少行、有没有乱码,用 CSV 在线查看器;转出的 JSON 想美化、压缩或校验语法,用 JSON 格式化/校验