悦省yueser.com

← 全部指南

CSV 转 JSON 指南:表头、引号与丢掉的层级

CSV 只表达「行和列」,JSON 能表达嵌套。从 CSV 转过去,注定只能得到扁平对象;指望它还原层级,方向就错了。

打开工具:CSV 转 JSON

运营给的表,怎么进代码

产品给了一张 Excel 导出的配置表,你想把它变成前端能直接用的 JSON;测试需要一批按行组织的数据;把 CSV 里的映射关系贴进接口文档。这些场景都适合先把表头理顺,再一次性转换。

转换后的结构很直接:第一行当键,其余每行一个对象。适合配置项、字典表、名单这类「一行一条记录」的数据,不适合表达父子关系;如果确实有层级,应该在拿到扁平结果之后自己组装。

引号、逗号与表头

逗号分隔时,字段内部出现逗号必须用双引号包起来,例如 "Beijing, China";字段里的双引号要写成两个双引号。不加引号,这一行会被切成多列,后面的字段整体错位,而且不会报错。

表头就是 JSON 的键,尽量用英文、下划线,避免空格和中文标点,否则代码里要写 obj["用户 名"]。重复的表头会让后面的列覆盖前面的;某一行的列数少于表头时,缺的字段会变成空字符串。

边界:值全是字符串,层级会丢

所有值都保持字符串:"42" 不是数字,"false" 不是布尔,空单元格是空串而不是 null。需要类型时,在代码里显式转换,别指望工具猜——猜错一次,后面全是隐式 bug。

CSV 本身没有嵌套结构。想把 {user: {name}} 表达成两列,只能压平成 user.name,转成 JSON 后仍然是扁平的键;真正的层级需要在转换后自己组装。另外,本工具按行解析,引号内的换行不支持,分号分隔也不支持。

常见问题

数字怎么都变成字符串了?

工具不做类型推断,这是有意的:以 0 开头的编号、超长 ID、看起来像布尔的字段,自动转换很容易改坏数据。需要数字就在代码里转,并对失败情况做处理。

字段里有逗号怎么办?

用双引号把整个字段包起来,例如 "Shanghai, CN"。如果整份文件用分号分隔,本工具不支持,需要先在表格软件里换成逗号或改用其他工具。

能处理嵌套或多行单元格吗?

不能。CSV 转出来永远是扁平对象,嵌套要在转换后自己组装;引号内的换行也会破坏按行解析。遇到这两种情况,考虑直接用 JSON 或 Excel 原生导入。

相关工具:CSV 转 JSON