CSV 转 JSON 的六个坑:逗号、引号与乱码
一、坑一:没加引号的逗号会拆列
姓名,电话,备注
张三,013800,含,逗号的备注
这一行会被解析成 4 个单元格,而表头只有 3 列,多出来的部分被丢弃——最后「备注」只剩「含」。正确写法是把含逗号的字段用双引号包起来:
张三,013800,"含,逗号的备注"
规则:字段里含分隔符、双引号或换行时,必须用双引号包裹。
二、坑二:引号内的引号要写两遍
字段里本身有引号时,用两个连续引号表示一个:
"他说""你好"""
解析结果是 他说"你好"。这是 CSV 规范里最反直觉的一条,手写 CSV 几乎必错。
三、坑三:前导零和电话号码会丢
013800 这种值,只要中间环节当成数字处理就变成 13800,零没了。
本工具的口径是:CSV 转 JSON 时数值一律先按字符串输出("013800"),不在转换环节做类型推断。后续要数字类型,在导入数据库或代码里显式转换——CSV 本身没有类型,这是格式的固有限制。
四、坑四:中文乱码多半是编码不是数据
转换全程按 UTF-8 处理,中文和 emoji 都不会被破坏。乱码通常出现在用 Excel 打开导出文件时:旧版本 Excel 会按本地编码(GBK)解读,需要手动选「UTF-8」或先用文本编辑器转存。
判断方法很简单:用文本编辑器打开,如果中文正常,问题就在 Excel 的导入设置。
五、坑五:JSON 转 CSV 的表头怎么来的
取所有对象键的并集,按首次出现顺序排列。[{"a":1},{"b":2}] 得到表头 a,b,两行分别是 1, 和 ,2——缺的位置留空。
如果输入是数组的数组([[1,2]]),没有键,就原样输出,不加表头。批量导出时把字段顺序统一好,否则每批的表头都可能不一样。
六、坑六:分隔符不止逗号
从系统导出的 CSV 可能是分号(欧洲区)或制表符(TSV)。工具会取前 5 行、在引号外统计逗号/分号/制表符/竖线各自出现的次数,优先选「每行次数一致且最多」的那个,单列数据则回退逗号。
自己写解析脚本时,这一步最容易被忽略——遇到「解析出来只有一列」先看分隔符,而不是怀疑数据。
七、两个规模与格式提醒
- 浏览器里转换的上限约 5000 行 / 200 列,超出会提示;更大的表用命令行工具分批处理(转换是本地同步执行,太大会卡住界面)。
- 导出的 CSV 用 CRLF 换行,兼容 Excel;程序处理时注意把
\r\n一起当作换行。
八、直接算
→ CSV ↔ JSON 转换:自动探测分隔符、引号转义、表头识别
→ JSON 格式化:转换后校验格式、缩进与语法错误定位
→ 编码转换:确认文件的真实字节与编码
本站文章为个人使用经验的原创整理,除已注明来源的引用外均为本人撰写。文中涉及的软件名称、商标、截图等归各自权利人所有,引用仅用于说明与交流。如认为本站内容侵犯了你的合法权益,请通过「关于本站」页面的联系方式告知,核实后将及时更正或删除。