电商订单拆明细
运营小陈从后台导出一份订单 JSON,里面每个订单的「商品列表」是一个嵌套数组,包含 SKU、数量、单价。她需要把这份数据交给财务做对账,但财务只认扁平的 CSV 表格。用本工具把嵌套的商品数组展平,每个 SKU 变成独立行,同时保留订单号、收货地址等外层字段,财务直接导入 Excel 即可逐行核对,省去手工拆解 300 多笔订单的重复劳动。
开发者工具 · JSON / 数据格式
数组→表格/嵌套展平
后端接口返回的 JSON 数组,在浏览器里一眼看不清字段对应关系。这个工具把数组结构拆成表格,嵌套对象和数组自动展平为多列,输出 CSV 可直接用 Excel 或 Pandas 打开。纯浏览器处理,原始数据不上传服务器,适合接口调试、数据迁移时快速预览结构。
运营小陈从后台导出一份订单 JSON,里面每个订单的「商品列表」是一个嵌套数组,包含 SKU、数量、单价。她需要把这份数据交给财务做对账,但财务只认扁平的 CSV 表格。用本工具把嵌套的商品数组展平,每个 SKU 变成独立行,同时保留订单号、收货地址等外层字段,财务直接导入 Excel 即可逐行核对,省去手工拆解 300 多笔订单的重复劳动。
后端工程师老赵在调试用户列表接口,返回的 JSON 里每个用户对象带有一个「地址」子对象(省、市、区、街道)。他需要把 50 条测试数据粘贴到 Excel 里,和预期结果逐字段比对。本工具将子对象字段自动展开为「地址_省」「地址_市」等独立列,老赵直接复制 CSV 到 Excel 后用条件格式标红不一致的单元格,5 分钟定位到 3 处字段映射错误。
市场专员小刘从问卷平台导出一份多选题结果,JSON 结构是「题号: 选项数组」。她需要把每个受访者的所有选项拆成一行一条记录,才能用数据透视表统计各选项占比。用本工具把选项数组展平,每个选项独立成行,同时保留受访者 ID 和填答时间。原本手动拆 200 份问卷要 2 小时,现在 1 分钟生成 CSV,直接拖进透视表出报告。
运维工程师小周排查一次线上故障,从日志系统捞到 2000 条请求记录 JSON,每条包含「请求头」「响应体」「耗时」三个嵌套对象。他需要把耗时超过 3 秒的慢请求筛选出来,分析是哪个接口的哪个参数导致。本工具将嵌套对象展平为「请求头_User-Agent」「响应体_status」等列,小周用 CSV 排序功能直接定位到耗时最高的 20 条记录,发现是某个图片接口未加缓存导致。
系统管理员老王要把旧服务器的 150 条 nginx 站点配置(JSON 格式)迁移到新管理平台,新平台只接受 CSV 导入。每条配置包含 server_name、listen 端口、ssl 证书路径等字段,其中「location 规则」是一个嵌套数组。用本工具把 location 数组展平,每个 location 规则独立成行,同时保留父级 server_name。老王一次性导入成功,避免逐条手工录入可能导致的端口冲突或路径拼写错误。
| 输入 | 输出 | 说明 |
|---|---|---|
| [{"name":"张三","age":30,"city":"北京"},{"name":"李四","age":25,"city":"上海"}] | name,age,city 张三,30,北京 李四,25,上海 | 常规:标准对象数组,验证基本展平与 CSV 表头自动生成 |
| [{"id":1,"info":{"score":95,"level":"A"}},{"id":2,"info":{"score":88,"level":"B"}}] | id,info.score,info.level 1,95,A 2,88,B | 常规:嵌套对象自动展平,点号分隔层级,验证展平逻辑 |
| [] | 边界:空数组,工具应返回空字符串(无表头无数据),验证空输入处理 | |
| [{"a":1},{"b":2}] | a,b 1, ,2 | 边界:数组内对象键不一致,缺失字段以空值填充,验证对齐逻辑 |
| [{"name":"测试","tags":["A","B"]},{"name":"样例","tags":["C"]}] | name,tags.0,tags.1 测试,A,B 样例,C, | 易错:数组字段展平为多列(tags.0 / tags.1),长度不足留空,验证数组展开规则 |
| [{"value":"包含,逗号"},{"value":"包含\"引号"}] | value "包含,逗号" "包含""引号" | 易错:字段值含逗号或双引号时,CSV 自动加双引号并转义内部引号,验证转义机制 |
1.JSON 数组外层未包裹方括号,解析失败
{"name":"Alice","age":30}
{"name":"Bob","age":25}[{"name":"Alice","age":30},{"name":"Bob","age":25}]工具期望输入为 JSON 数组(以 [ 开头),每行一个独立对象不是合法 JSON,解析器会直接报错。
2.对象键值对末尾残留逗号,违反 JSON 规范
[{"name":"Alice","age":30,}][{"name":"Alice","age":30}]JSON 标准(RFC 7159)禁止对象或数组末尾有多余逗号,多数解析器会抛出 SyntaxError。
3.键名使用单引号而非双引号,非标准 JSON
[{'name':'Alice','age':30}][{"name":"Alice","age":30}]JSON 要求键名必须用双引号包裹,单引号仅在 JavaScript 对象字面量中合法,JSON 解析器会拒绝。
4.字符串值内未转义双引号,破坏结构
[{"name":"Alice "Smith"","age":30}][{"name":"Alice \"Smith\"","age":30}]字符串值中的双引号必须用反斜杠转义,否则解析器会误认为键值对结束,导致后续内容解析失败。
5.嵌套对象未展平,CSV 输出多级表头混乱
[{"user":{"name":"Alice","age":30}}][{"user.name":"Alice","user.age":30}]工具默认展平嵌套对象为点号分隔键名,若不手动展平,CSV 表头会变成 user 列,值为 [object Object]。
6.数组元素类型不一致,CSV 列数不匹配
[{"name":"Alice","age":30},{"name":"Bob"}][{"name":"Alice","age":30},{"name":"Bob","age":25}]CSV 是严格表格结构,若某对象缺少其他对象拥有的键,该列会留空,导致数据对齐错位。
7.值包含换行符未转义,CSV 行数异常
[{"name":"Alice\nSmith","age":30}][{"name":"Alice Smith","age":30}]CSV 中换行符通常作为行分隔符,若 JSON 字符串含换行符,输出 CSV 会多出一行,破坏表格结构。
8.数值被写成字符串,CSV 中失去数字类型
[{"name":"Alice","age":"30"}][{"name":"Alice","age":30}]JSON 中数字不应加引号,否则 CSV 导出后 age 列会被视为文本,无法参与排序或计算。
CSV = flatten(obj, prefix='') → 键路径:值
objJSON 对象或数组元素prefix父级键路径前缀,初始为空键路径点号连接的多级键名,如 'a.b.c'输入 JSON 数组 [{"user":{"name":"张三","age":30},"scores":[95,88]}]。展平后:第一行键路径为 user.name、user.age、scores.0、scores.1,对应值 "张三"、30、95、88。第二行同理。最终 CSV 表头为 user.name,user.age,scores.0,scores.1。
可以。本工具默认递归展平嵌套结构,遇到对象会按 JSON 路径生成列名(如 user.address.city),遇到数组会拆成多行并复制外层字段。如果某层字段值本身是深层对象,展平后列数会变多;如果 JSON 层级太深(超过 10 层),建议先拆分成多个小文件分批转换,避免 CSV 列数过多导致 Excel 打开卡顿。
空数组 [] 在展平时会被当作零行处理,所以该外层记录会直接跳过——这是很多在线工具的默认行为。如果你希望空数组对应的行保持存在(只留其他字段),可以在转换前把空数组手动替换成 null 或空对象 {};或者先在本工具预览区确认行数变化,确认后再导出。
CSV 文件本身不保存编码信息,Excel 默认用 GBK 打开,而本工具输出 UTF-8。解决方案:导出后用记事本另存为 UTF-8 with BOM(带 BOM 的 UTF-8),再打开 Excel 就能正常显示中文。或者直接拖入 Excel 后用「数据→从文本/CSV 导入」,在导入向导里选 UTF-8 编码。
本工具严格区分:JSON 中的 null(无引号)在 CSV 里输出空单元格;字符串 "null"(有引号)则保留原文。如果你希望统一处理,建议在粘贴前用文本编辑器做一次全局替换。另外注意:某些 JSON 生成工具会把缺失字段输出为 "null" 字符串,这会导致 CSV 里出现文字 'null',而不是空。
不会错位。本工具会扫描整个 JSON 数组,收集所有出现过的键名作为 CSV 表头,缺失的字段留空。例如第一条有字段 a、b,第二条有 a、c,则最终 CSV 列顺序为 a、b、c,第二条的 b 单元格为空。如果键名数量差异很大(比如几十个字段只有几条记录有),建议先过滤掉多余的字段再转换。
纯浏览器端处理。本工具实现方式是 FE(前端),你的 JSON 数据不会离开当前页面——粘贴后直接在浏览器内存里解析、展平、生成 CSV 并下载。断网也能用,没有文件大小上限(但浏览器内存有限,超过 50MB 的 JSON 建议分批处理)。隐私敏感数据放心使用。
本工具会将最内层数组展平为单独的列。例如 [[1,2],[3,4]] 会变成两行:第一行列名为 0、1,值为 1、2;第二行同样列名,值为 3、4。如果内层数组长度不一致(比如 [1,2] 和 [3]),短的会留空。如果你希望保持数组原样输出成字符串,建议先在外层用 JSON.stringify 包裹该字段。
大概率不是 bug,而是 JSON 里存在嵌套数组。例如一个对象包含一个长度为 5 的数组字段,展平后该对象会变成 5 行(数组每行一条,外层字段复制)。这是展平的正常行为。你可以在预览区看到行数变化提示,如果不想展开某个数组,可以在粘贴前手动把该字段值改成空对象或字符串。
隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。