JSON 转 CSV:转换差异、边界与常见坑

在线 JSON 转 CSV:嵌套对象按键路径分隔符展平,数组按行或按列处理,适合做透视、批量导入与表格复核;导出前先确认哪一层才是「一行」,避免列数忽多忽少;列数不一致时先回头看展平层级。

把嵌套 JSON 拍平成表,键路径成为列名。设计关键是数组字段的策略:聚合成一个单元格、展开成多行、还是生成独立列——这个选择直接决定下游能不能做透视与求和,先想清楚统计口径再转换。

两种格式的差异对照

维度JSONCSV
层级任意深度仅二维,必须拍平
键集合每个对象可不同所有行共享同一组列
数组原生数组需展开为多行、多列或聚合字符串
类型number/boolean/null 明确字符串,类型靠消费端约定
大整数可字符串精确保存文本保存精确(但下游解析可能再失真)
可读性结构清晰,机器友好表格友好,可导入 Excel/BI
体积精简更精简,但重复列名有冗余
适用场景API、配置报表、批量导入、数据分析

边界条件

  • 字段值含逗号、换行或双引号时必须加引号并转义内部引号,否则列错位。
  • 键名含点号时与拍平分隔符冲突,会造成取值路径歧义,需要换分隔符或转义。
  • 异构数组只取首对象键集合的实现会静默丢列,需核对列数与键并集是否一致。
  • 空数组与缺失键都表现为空白,无法区分"空集合"与"无此字段"。

常见坑

  • 直接把 JSON 数组当行输出,数组元素被拼成看不懂的字符串,后续无法拆列。
  • 键名里带点号的字段与拍平路径撞车,同一列名出现在两处,取值时随机命中。
  • 中文键名未做转义,含逗号的键名让表头整体错列。
  • 只按首个对象生成列,后面出现的字段整批消失且没有告警。

相关工具

常见问题

怎么把 CSV 再转回 JSON?

使用同工具的交换方向功能,或本站对应的「CSV 转 JSON」页面,两者都本地运行、数据不上传,可完成往返转换与校验。

JSON 和 CSV 哪个更适合人类阅读?

这取决于场景:CSV 通常更偏向程序解析与接口传输式的可读形态,而 JSON 更利于程序解析与接口传输式的程序消费;需要人工编辑时优先选可读性更高的那一侧。

嵌套字段怎么变成列?

拍平:user.name 变成一列,列名就是键路径(分隔符可选点号或下划线)。数组字段要决定策略——聚合成一个字符串、展开成多行、还是生成独立列。这个选择直接决定下游能否做透视分析,建议先按"消费端要做什么统计"来定。

对象数组的键不一致会怎样?

工具通常取所有对象键的并集作为列集合,缺失的留空;但也有实现只取第一个对象的键,导致后续行的字段整列丢失。转换后用行数 × 列数核对一下,或者先对样本做键统计,避免静默丢字段。