CSV 转 JSON 指南:表头、引号与丢掉的层级
CSV 只表达「行和列」,JSON 能表达嵌套。从 CSV 转过去,注定只能得到扁平对象;指望它还原层级,方向就错了。
运营给的表,怎么进代码
产品给了一张 Excel 导出的配置表,你想把它变成前端能直接用的 JSON;测试需要一批按行组织的数据;把 CSV 里的映射关系贴进接口文档。这些场景都适合先把表头理顺,再一次性转换。
转换后的结构很直接:第一行当键,其余每行一个对象。适合配置项、字典表、名单这类「一行一条记录」的数据,不适合表达父子关系;如果确实有层级,应该在拿到扁平结果之后自己组装。
- Excel 导出的配置表转前端 JSON
- 测试数据、字典表、名单
- 把表格里的映射关系贴进代码
引号、逗号与表头
逗号分隔时,字段内部出现逗号必须用双引号包起来,例如 "Beijing, China";字段里的双引号要写成两个双引号。不加引号,这一行会被切成多列,后面的字段整体错位,而且不会报错。
表头就是 JSON 的键,尽量用英文、下划线,避免空格和中文标点,否则代码里要写 obj["用户 名"]。重复的表头会让后面的列覆盖前面的;某一行的列数少于表头时,缺的字段会变成空字符串。
- 含逗号的字段用双引号包裹
- 字段内双引号写成连续两个
- 表头保持唯一、无空格、ASCII 优先
边界:值全是字符串,层级会丢
所有值都保持字符串:"42" 不是数字,"false" 不是布尔,空单元格是空串而不是 null。需要类型时,在代码里显式转换,别指望工具猜——猜错一次,后面全是隐式 bug。
CSV 本身没有嵌套结构。想把 {user: {name}} 表达成两列,只能压平成 user.name,转成 JSON 后仍然是扁平的键;真正的层级需要在转换后自己组装。另外,本工具按行解析,引号内的换行不支持,分号分隔也不支持。
- 值全是字符串,类型在代码里转
- 嵌套结构会丢层级,只能拍平
- 引号内换行、分号分隔都不支持
常见问题
数字怎么都变成字符串了?
工具不做类型推断,这是有意的:以 0 开头的编号、超长 ID、看起来像布尔的字段,自动转换很容易改坏数据。需要数字就在代码里转,并对失败情况做处理。
字段里有逗号怎么办?
用双引号把整个字段包起来,例如 "Shanghai, CN"。如果整份文件用分号分隔,本工具不支持,需要先在表格软件里换成逗号或改用其他工具。
能处理嵌套或多行单元格吗?
不能。CSV 转出来永远是扁平对象,嵌套要在转换后自己组装;引号内的换行也会破坏按行解析。遇到这两种情况,考虑直接用 JSON 或 Excel 原生导入。
相关工具:CSV 转 JSON