浏览器本地表格工具

嵌套 JSON 转规范表格

把接口返回的嵌套 JSON、JSONL 转成 CSV 表格,选择记录层级,将商品等数组拆为关联子表。保留长数字原文,核对遗漏字段,浏览器本地处理。

文件内容在浏览器本地处理;刷新或关闭会清空会话。网页仍会请求静态资源。

1 · 原始 JSON→2 · 结构与关系→3 · 多表审阅

只读取本地 UTF-8 文本,最多 10 MB;不连接 API 或自动打开数据中的链接。

pasted.json · 原始文本与格式

JSONL 每个非空物理行一个完整值。空白行可容忍但会计数,错误行不能跳过。切换格式不是自动修复。

合成示例库 · 正常 / 边界 / 错误
仅页面内存 · UTF-8 · 全量结构扫描 · 刷新或关闭清空

先决定记录是什么,再把嵌套结构变成表格

订单 JSON 往往同时包含客户对象、商品数组和付款数组。商品与付款是两组不同的记录,不能凭数组下标互相配对。一个订单有两件商品、两笔付款,若同时展开成一张表,很容易产生四种组合,后续汇总把商品金额重复计算。本工具要求先选主记录路径,再为数组明确选择处理方式。

载入合成订单示例,选择 orders 为主记录,将 items、payments 设为独立子表。结果是订单表 2 条、商品表 2 条、付款表 2 条。第二个订单的数组为空,订单仍保留,不会伪造商品或付款。每张子表通过生成的父 ID 关联实际父记录。

本地读取完整结构,错误行不能悄悄跳过

可选择本地 UTF-8 JSON、JSONL 文件,或粘贴原始文本。普通 JSON 的根必须是对象或数组。JSONL 每个非空物理行是一个完整值;多行格式化的 JSON 不能作为多条 JSONL 记录。本工具容忍空白行并单独计数,这是明确的宽容规则,不代表 JSON Lines 标准允许空白记录。任何非空错误行都会阻止交付。

读取结构时扫描全部内容,字段树只抽样显示值。搜索和翻页不会缩小发现范围,晚于前 50 条首次出现的字段仍会被发现。界面报告根记录、节点、路径和深度。重复对象键在解码转义后检测,因此 a 和 Unicode 转义表示的同名键也会阻断,并指出路径与位置。

数字在原始词元阶段保留,9007199254740993 不先转换成普通浮点数;1.2300 也保留原写法。字符串 00123 保持前导零。不过 CSV 被外部电子表格打开时仍可能自动转成数字,导入该软件时应为标识符和精确数字选择文本列。

主记录、父级元数据和无歧义路径

根对象产生一条主记录,根数组每个元素产生一条。选择订单下的 items 为唯一主记录路径,会收集每个订单的商品;没有商品的订单不产生商品行。需要保留空订单时,应选择 orders 为主表,再拆商品子表。

父级元数据可以把批次标签、订单编号等祖先字段带到商品行。使用字段树搜索找到路径,再在父级元数据中勾选。只允许实际祖先上下文,不允许按相同下标从并列付款数组取值。缺少父字段时保留缺失并记录状态。

内部路径由独立片段组成,字面键 customer.name 与 customer 对象下的 name 不会冲突。字段树显示括号路径,映射报告保存路径数组。默认表头遇到重名会加后缀,仍保留各自映射;手工改名导致重名则阻断,不能覆盖另一列。

数组拆表、空数组和类型变化

数组默认保存为一格 JSON 文本,也可选择独立子表,或改为唯一主记录路径。并列数组建议独立子表,不生成笛卡尔积。深层数组可以逐层拆表;只有祖先数组也拆成子表时,更深的子表规则才生效。若祖先仍是文本,深层数组仍包含在那段文本中。

每张表都有 record_id、parent_id、item_order 和 source_path。任务 ID 来自随机命名空间及解析节点位置,不拼接私密订单号。同一未改动会话中保持稳定,改动原文会开启新命名空间。子表指向直接父表,项目序号从 1 开始,原始路径能定位具体节点。

空数组产生零条子记录,缺失数组和 null 数组也不伪造记录,状态清单保留区别。指定拆表的字段若有非数组值,必须修复来源或改回文本。普通字段出现字符串、对象等类型变化时,可选择保留原值并记录类型,或阻断报告。对象会序列化为 JSON,不变成没有意义的通用文字。

审阅每张表的数量与未导出字段

样本预览先完成完整扫描和计算,再展示每表前 20 条;预计数量对应全量结果。样本不能下载或继续工作流。生成完整表格后,概况列出来源路径、行列数量和关联键,标签页分别查看主表、子表及报告。

CSV 本身不能表达所有 JSON 类型。缺失与 null 可能同为空单元格,空字符串、空对象、空数组也有各自含义。需要这些区别时请保留类型与状态报告。未导出字段清单列出未选择或不在记录范围内的路径;已随序列化容器保存的内部字段不重复算作遗漏。

改动输入、规则或撤销规则后,原结果变为过期,必须重新生成。保存规则包含路径、类型预期、列名与策略,不包含原始数据;分享前仍应检查列名等信息。规则只能加载到匹配的完整结构,不继承旧结果。

校验导出,再接计算、汇总与关联

可下载单张 CSV 或 TSV,也可下载包含所有表格和报告的 ZIP。预览搜索不影响导出范围。下载前重新解析文件,ZIP 还检查每个子表父 ID 在对应父文件存在。默认不附原始 JSON。电子表格公式防护会给部分文本增加单引号;确需原文时须明确确认并检查影响数量。

从商品表继续进入计算列,计算单价乘数量,再按 parent_id 汇总,与订单表 record_id 关联。其他生成表会保留为可选对照输入。处理在可取消的浏览器工作线程中进行,刷新或关闭清空内存,不连接 API、密钥或数据中的链接;网页本身仍会加载静态资源。

当前限制:UTF-8 输入 10 MB,深度 64,50 万节点、5000 个路径、20 张输出表、8 层子表;总记录 10 万、每表含元数据最多 200 列、输出 200 万单元格。字符串最多 10 万字符,数字词元最多 1000 个数字。超限拒绝而不截断,任务 30 秒超时。设备不同,实际性能也会不同。

常见问题

接口返回一大段 JSON,怎么整理成表格?

保存为 JSON 文件或粘贴原文,先检查完整结构,再选择“哪一层是一条记录”。例如接口外层有状态码,实际订单在 orders 数组里,就把 orders 设为主记录路径。工具只处理你提供的数据,不会替你请求接口或打开其中的链接。

多层数组要拆成多行,还是分别导出几个表?

只想要数组里的明细时,可以直接选它作为主记录。还要保留订单等父级信息时,把商品、付款分别设为子表,靠关联编号连接。只作备注、不需要逐条统计的数组,也可以保留为文本。先确定“一行代表什么”,再选择拆分方式。

为什么 2 件商品、3 笔付款会被别的工具展开成 6 行?

两组独立数组同时展开时,可能把每件商品和每笔付款两两组合。这样再汇总金额容易重复计算。本工具将商品和付款分别输出为关联子表,不自动交叉组合;需要汇总时,可先按订单分别求和,再关联回主表。

商品数组是空的,这张订单还会保留吗?

订单作为主表时会保留,只是没有对应商品子表行。如果你把商品数组选成唯一主记录,就只输出商品明细,没有商品的订单自然不会产生商品行。请根据要交付“订单表”还是“商品表”来选择。

长订单号会变成科学计数法,或者丢掉前面的 0 吗?

解析 JSON 时会保留数字原文,不先转成可能损失精度的 JavaScript 数字;字符串形式的 00123 也会保留。CSV 被 Excel 等软件打开后仍可能再次自动转换,所以编号列请按文本导入。若来源文件本身已经丢了位数,工具无法还原。

JSONL 文件为什么不能按普通 JSON 导入?

JSONL 通常每个非空物理行就是一个完整值,普通 JSON 则可以换行排版成一整个文档。请选择对应格式。本工具会报告容忍并忽略的空白行,但发现坏行时会阻止生成,不会悄悄跳过缺失记录。

null、字段不存在和空字符串,导出后还能分清吗?

只看 CSV 中的空格子,不能完整区分这些情况。请同时保留字段类型和状态报告,它们会标明 null、缺失字段、空字符串及空数组。需要还原原始结构时,还应保留原 JSON 文件。

怎么确认没有漏掉字段或子表?

生成后查看未导出字段清单,核对路径、类型和各表行数。下载“全部表与报告 ZIP”可一起保留关联关系、字段和状态等报告。选了某一层主记录,不代表整个 JSON 的所有内容都会自动进入结果。