JSON 转 CSV:转换差异、边界与常见坑
在线 JSON 转 CSV:嵌套对象按键路径分隔符展平,数组按行或按列处理,适合做透视、批量导入与表格复核;导出前先确认哪一层才是「一行」,避免列数忽多忽少;列数不一致时先回头看展平层级。
把嵌套 JSON 拍平成表,键路径成为列名。设计关键是数组字段的策略:聚合成一个单元格、展开成多行、还是生成独立列——这个选择直接决定下游能不能做透视与求和,先想清楚统计口径再转换。
两种格式的差异对照
| 维度 | JSON | CSV |
|---|---|---|
| 层级 | 任意深度 | 仅二维,必须拍平 |
| 键集合 | 每个对象可不同 | 所有行共享同一组列 |
| 数组 | 原生数组 | 需展开为多行、多列或聚合字符串 |
| 类型 | number/boolean/null 明确 | 字符串,类型靠消费端约定 |
| 大整数 | 可字符串精确保存 | 文本保存精确(但下游解析可能再失真) |
| 可读性 | 结构清晰,机器友好 | 表格友好,可导入 Excel/BI |
| 体积 | 精简 | 更精简,但重复列名有冗余 |
| 适用场景 | API、配置 | 报表、批量导入、数据分析 |
边界条件
- 字段值含逗号、换行或双引号时必须加引号并转义内部引号,否则列错位。
- 键名含点号时与拍平分隔符冲突,会造成取值路径歧义,需要换分隔符或转义。
- 异构数组只取首对象键集合的实现会静默丢列,需核对列数与键并集是否一致。
- 空数组与缺失键都表现为空白,无法区分"空集合"与"无此字段"。
常见坑
- 直接把 JSON 数组当行输出,数组元素被拼成看不懂的字符串,后续无法拆列。
- 键名里带点号的字段与拍平路径撞车,同一列名出现在两处,取值时随机命中。
- 中文键名未做转义,含逗号的键名让表头整体错列。
- 只按首个对象生成列,后面出现的字段整批消失且没有告警。
相关工具
- JSON 转 CSV把对象数组形式的 JSON 转为 CSV,可自定义分隔符、表头与引号转义,适合导出到 Excel 与 BI 工具,省去手写转换脚本。可自定义分隔符、表头行与引号策略,自动处理字段内含逗号与换行的转义。嵌套对象可用点号路径摊平,缺失字段留空以保持列对齐。支持选择导出哪些字段。表头取字段并集且缺失留空。
- 数据格式转换器在 JSON、YAML、TOML、XML、CSV 之间一处粘贴自由互转并实时预览。在 JSON、YAML、TOML、XML 与 CSV 之间任意互转,粘贴一次即可看多种输出。转换时会提示解析失败的位置,避免带着语法错误继续处理。适合在不同工具链之间迁移配置文件。支持粘贴即转。多种格式的输出可逐一取用。
- JSON 转 YAML把 JSON 转为缩进风格的 YAML,可自定义缩进宽度,适合改写成 K8s 清单与 GitHub Actions 工作流,让配置更易编辑对比。缩进宽度可调,多行字符串会自动改用块标量,避免出现大量转义符。输出适合直接粘进工作负载清单与流水线配置文件。注释式写法需自行补充。长文本会改用块标量输出。
- Excel 转 CSV 工具把 Excel 转为 CSV,可自定义分隔符并批量转换多个工作表,用 SheetJS 本地处理。可自定义分隔符与是否保留表头,并一次性转换多个工作表。字段内含分隔符或换行时会自动加引号转义。适合把表格交给数据库批量导入或交给脚本继续处理。输出可选 UTF-8 编码以避免中文乱码。
常见问题
怎么把 CSV 再转回 JSON?
使用同工具的交换方向功能,或本站对应的「CSV 转 JSON」页面,两者都本地运行、数据不上传,可完成往返转换与校验。
JSON 和 CSV 哪个更适合人类阅读?
这取决于场景:CSV 通常更偏向程序解析与接口传输式的可读形态,而 JSON 更利于程序解析与接口传输式的程序消费;需要人工编辑时优先选可读性更高的那一侧。
嵌套字段怎么变成列?
拍平:user.name 变成一列,列名就是键路径(分隔符可选点号或下划线)。数组字段要决定策略——聚合成一个字符串、展开成多行、还是生成独立列。这个选择直接决定下游能否做透视分析,建议先按"消费端要做什么统计"来定。
对象数组的键不一致会怎样?
工具通常取所有对象键的并集作为列集合,缺失的留空;但也有实现只取第一个对象的键,导致后续行的字段整列丢失。转换后用行数 × 列数核对一下,或者先对样本做键统计,避免静默丢字段。