JSON 转 CSV 指南:扁平数据才适合进表格
JSON 能嵌套,CSV 不能。转换之前先问一句:这份数据是不是「一行一条、字段都一样」?如果不是,转过去一定丢东西。
把接口数据交给不用代码的人
运营想看订单列表、财务要核对一批记录、把监控数据丢进 Excel 做透视表——这些都要求 CSV。JSON 直接发过去,对方只能看到一坨括号,转换是最省事的桥。
适合的数据形状很明确:一个数组,每个元素是对象,字段大致相同。字段差异越大,转出来的表格空洞越多,这时候该先讨论数据结构,而不是硬转;否则导出一次,就要在表格里补半天空值。
- 接口返回的列表导出给运营
- 把日志或监控数据丢进表格软件
- 给非技术同事一份可直接打开的表格
表头、缺失字段与转义
表头取第一个对象的键,顺序也照它来。后面的对象如果多出键,这些字段不会出现在 CSV 里,等于被丢掉;缺少的键则输出空值。所以第一行最好包含全部字段,或者先做一次字段并集。
值里出现逗号、双引号或换行时,工具会用双引号包住整个字段,并把内部的双引号写成两个。这一步不能省:一个逗号就能让整列错位。表头本身如果含逗号,工具不会特殊处理,建议提前改名。
- 表头来自第一个对象的键顺序
- 多出的键会被丢掉,缺的键留空
- 字段内逗号、引号、换行会自动加引号
边界:嵌套与 Excel 的坑
嵌套对象会变成 [object Object],数组会被逗号拼成一串文本,层级信息在 CSV 里无处安放。需要保留结构,就拆成多张表用 ID 关联,或者干脆用 JSON 交付。
Excel 直接双击打开 UTF-8 的 CSV,中文可能乱码,长数字会变成科学计数法,以 0 开头的编号会丢前导零。正确做法是用「数据 → 从文本/CSV」导入并指定 UTF-8,或让程序生成带 BOM 的文件。
- 嵌套变 [object Object],数组拼成一串
- Excel 双击打开易乱码、丢前导零
- 用「从文本/CSV」导入并指定 UTF-8
常见问题
为什么出现了 [object Object]?
因为该字段是对象或嵌套结构,CSV 单元格只能放文本,JavaScript 把它转成了这个字符串。先拍平字段(例如 user.name),再导出。
中文在 Excel 里为什么乱码?
Excel 双击打开时按本地编码猜,容易把 UTF-8 认错。请用「数据 → 从文本/CSV」导入并选 UTF-8,或者生成带 BOM 的 CSV。
表头顺序能调整吗?
工具按第一个对象的键顺序生成表头。想固定顺序,就先构造一个包含全部字段、顺序正确的对象放在数组第一位,或转换后在表格软件里调整。
相关工具:JSON 转 CSV