给业务方的表不能带花括号。「JSON 格式化」的转 CSV 规则是三句话:嵌套键用点号路径拼成列名(形如 a.b.c),同一层所有对象出现过的键取并集做表头,某条记录没有这个键就留空。三条合起来保证了一件事——每份数据的字段不完全一样时,列仍然对得齐,不会像手工复制那样错一列全错。
为什么并集是这里最关键的一条
接口返回里最常见的情况是可选字段:有优惠的商品多一个 discount 键,没有的就少一个。如果按第一条记录的键来定表头,后面所有 discount 都会被丢掉,而且丢得毫无提示。取并集后这条列存在,缺的地方是空格子,业务方一眼能看出「这里没填」。
同理,路径列名让同名不同层的字段不会互相覆盖。两处都有 name,一个是店铺、一个是商品,拍平后是两条不同的列,不会被合并成一列串味。
三个真实会踩的坑
空值有两种表现,导出来看不出区别。 null 和键根本不存在,在 CSV 里都是空单元格。要区分就得回原始 JSON 查,转完就没了。财务类数据尤其要注意,把 null 当 0 汇总会得到错的总数。
布尔与数字会被写成文本形态。CSV 不带类型,Excel 打开后前导零的编号会变数值、超过 15 位有效数字的长编号末几位会变成 0。单号、身份证号、条码这类列必须先设成文本格式再导入。
多层数组不会自动展开成多行。一条记录里嵌着若干明细项时,拍平只能压到一行里。正确做法是先拆层级:明细单独转一张表,用父级 id 关联,两张表一起交给业务方。
表头这一行谁来定
拍平后第一行是列名,但源数据未必老实。首行做键名是最常用的模式,适合从 Excel 导出的规范表;关掉键名映射则输出二维数组,适合纯数值矩阵或本就没有表头的导出数据,位置比名字重要。
两种边界要留意:表头单元格为空时会被补成 column3 这类占位列名,看到它就说明源表有漏填,别当脏数据删掉;同名表头会自动加 _2、_3 后缀,导出前先在原文件里把重名列改成有业务含义的名字,否则交付出去的表头是一串看不懂的编号。
建议流程
- 先在 JSON 格式化 里确认解析成功,看统计的对象数与数组数,判断主体是不是一张表。
- 执行转 CSV,得到键路径表头。
- 拿到 CSV转换 勾选需要的列并调整顺序,宽表直接发出去没人看。
- 抽查三行:第一条、最后一条、以及中间某个明显缺字段的,核对是不是原样留空。
什么时候别用这条路:数据不是「对象数组」这一种形态,比如根节点就是对象、里面混着好几张列表,或者数组元素类型不统一(一会儿是字符串一会儿是对象)。非对象数组只会输出单列,深层混合结构需要自己先切片。本站不做 JSON Schema 校验,字段是否合法得你自己判断。全程在浏览器本地完成,不上传服务器、不需要登录。