DevTool 团队

从 CSV 到 JSON:表头、类型推断与中文乱码一次说清

CSV 转 JSON 到底怎么转才不出错?这篇按真实翻车点讲:表头行怎么定、订单号精度怎么保、Excel 导出的 CSV 中文乱码怎么修、分隔符怎么识别,最后用在线工具一次转对,反向转 JSON 回 CSV 也有承接。

为什么 CSV 转 JSON 总在细节上翻车

CSV 看起来是最简单的格式——逗号分隔、一行一条记录。但真转起来,翻车点全在细节:订单号变成科学计数法、Excel 导出的中文全变问号、值里带逗号把一行拆成两半、没有表头的文件第一行数据被当成字段名吃掉。这些坑每一个都对应 CSV 规范或编码层的一条规则,理解了规则,转换就从「碰运气」变成「确定性」。

先给最快的路径:CSV 转 JSON 在线工具把常见决策都做成了默认正确——分隔符自动嗅探、类型推断、16 位以上整数保字符串、BOM 自动剥离,粘贴即出结果。下面逐条讲这些默认值背后的规则,帮你判断什么时候需要手动调。

表头:第一行到底是不是字段名

JSON 数组的每一项是对象,字段名从哪来是第一个决策:

  • 首行是表头(最常见):name,age 变成 "name"、"age" 键。空表头单元格要补名(本站工具补 column_N),重名表头要消歧(补 _2、_3),否则对象键会互相覆盖。
  • 没有表头:字段名自动生成 column_1、column_2……注意列数要按全表最宽的行算——只按首行算,后续行的尾部字段会被静默丢弃,这是无表头模式最常见的静默 bug。

Excel/WPS 里复制一块区域粘贴出来的是 Tab 分隔(TSV),不是逗号——好的转换工具会自动嗅探,不用你先转格式。

类型推断:哪些值该变数字,哪些必须保持字符串

CSV 里一切都是文本,JSON 有类型,于是推断规则决定了输出质量:

CSV 原文 推断结果 说明
30 30(数值) 常规数字转数值
true / false 布尔 大小写不敏感识别
007 "007"(字符串) 前导零转数字会丢零,保持字符串
9223372036854775807 字符串 16 位以上超 Number 精度上限(2^53),必须字符串承载
空单元格 null / "" / 省略 三种策略按消费端约定选

订单号、雪花 ID、身份证号是重灾区:JS 的 Number 只能精确表示到 2^53-1(约 9 千万亿),19 位的雪花 ID 直接转数值末几位会变成 0。判断标准很简单:位数 ≥16 就该走字符串。如果下游系统要求所有字段都是字符串,直接关掉类型推断做全字符串输出。

带引号的字段是另一条规则:"Smith, John" 里的逗号是值的一部分,不是分隔符——符合 RFC 4180 的解析器都能正确处理,手写 split(',') 会在这里翻车。

中文乱码:九成是编码问题,不是工具问题

「CSV 转 JSON 中文乱码」是高频搜索词,但乱码几乎都发生在转换之前——文件编码不对:

  1. Excel 另存为 CSV 默认可能是 ANSI/GBK(跟系统区域设置走),而 Web 工具一律按 UTF-8 解析。GBK 字节按 UTF-8 解出来就是乱码或替换字符 �。
  2. 解法:Excel 里「另存为」时选 「CSV UTF-8」 格式;或者把内容粘贴到 VS Code(右下角能看到并切换编码),确认 UTF-8 后再复制粘贴到工具。
  3. BOM:Windows 记事本/Excel 导出的 UTF-8 CSV 常带 BOM(\uFEFF),它会让第一个字段名变成 \uFEFFname 这种隐形污染。合格的工具会自动剥离 BOM。

本站工具在检测到内容含替换字符(非 UTF-8 解码的标志)时会直接提示重新另存为 CSV UTF-8,而不是让你盯着乱码猜原因。

一步到位的动线

CSV 转 JSON 工具的默认配置就是本文的推荐值:表头开启、类型推断开启(含前导零与大整数保护)、空单元格为 null。流程三步:粘贴或上传 → 需要时调整选项(关表头、全字符串、排除列)→ 复制或下载 .json。

转出来之后常见两个去向:格式化查看交给站内 JSON 格式化工具;反向转回 CSV(改完数据要回表格)用 JSON 转 CSV 工具,正反向选项语义对齐,来回转不丢信息。表格源头是 Excel 文件而非 CSV 时,Excel 转 JSON 支持多工作表与合并单元格。

常见问题

CSV 转 JSON 用什么工具最快?

在线转换最省事:把 CSV 内容粘贴到本站的 CSV 转 JSON 工具,分隔符自动识别,数字、布尔、空值自动推断类型,结果一键复制或下载 .json 文件;数据全程在浏览器本地处理,不上传服务器。

CSV 转 JSON 中文乱码怎么解决?

根因是编码:Excel「另存为 CSV」默认常是 ANSI/GBK,而多数工具按 UTF-8 解析。解决:另存时选「CSV UTF-8」,或先把内容粘到 VS Code 等编辑器确认编码为 UTF-8 再复制粘贴。本站工具检测到疑似非 UTF-8 内容会直接给出提示。

长数字订单号转 JSON 后精度丢了怎么办?

这是 JavaScript Number 的精度上限(2 的 53 次方)导致的,16 位以上整数必须以字符串承载。转换时让工具把 16 位以上整数保持为字符串(本站工具默认如此),或整体关闭类型推断全部按字符串输出。

没有表头的 CSV 怎么转 JSON?

关闭「首行是表头」选项,字段名会自动生成为 column_1、column_2 直到最后一列。注意字段数量要按全表最宽的行算,只看首行会把长行的尾部字段丢掉。