JF

JSON 扁平化/还原

使用区分对象键与数组索引的路径展开、还原 JSON

JSON 与数据
🔒 100% 本地运行 — 你的数据不会离开当前页面
由 Evan 维护•最近更新:2026年9月30日

默认用 $["对象键"][0] 区分对象成员和数组索引,保留空键、特殊键、根标量及空容器。根值记为 $。还原输入的叶值只能是标量或空容器;冲突路径与缺号数组会报错。传统分隔符模式仅支持明确的受限子集。

严格 JSON:拒绝重复键及会改变数值的转换;安全整数范围 ±9007199254740991,小数必须可等值回写,负零不支持。输入 ≤2 MiB,深度 ≤128,值总数 ≤100000,输出 ≤8 MiB。路径 ≤8192 字符,查询 ≤10000 条,数组索引 0–99999。

在当前页面本地处理,不保存 JSON 或路径草稿,不执行查询脚本,不把键名、路径或值发送到统计服务。

页面阅读模式

完整说明还包括常见问题处理、操作示例、代码片段、FAQ 和相关工具,便于核对结果或排查问题。

工具说明

把 JSON 转为类型明确的路径映射,再还原为原结构。默认采用 $["键"][0],明确区分对象键与数组索引,并保留空键、含分隔符的键、空容器和根标量;$ 表示根值。还原时会拒绝等价路径、父子冲突、对象与数组混合节点及缺号索引,不覆盖或补造数据。点号、斜杠、下划线路径仍可用于受限的传统格式。严格解析会拒绝重复键和数值改变,精确的大整数标识请使用字符串。输入最多 2 MiB、128 层,输出最多 8 MiB,处理在当前页面完成,不保存输入草稿。

场景配方

01

对容易混淆的键进行往返核对

目标:将字面点号键、嵌套成员和空数组分别保留。

  1. 输入 {"a.b":1,"a":{"b":2},"empty":[]},保持“展开”和“类型明确的路径”。
  2. 执行后核对 $["a.b"]、$["a"]["b"]、$["empty"] 三条路径,复制完整 JSON 映射。
  3. 把复制的映射粘贴为输入,选择“还原”再执行,与原始键、类型和值逐项比较。

结果:字面 a.b 的值仍为 1,嵌套 a.b 仍为 2,empty 仍为数组,没有路径被覆盖。

生产可用片段

含点号的键不等于嵌套路径

text

输入:
{"a.b":1,"a":{"b":2},"empty":[]}

类型明确的展开结果:
{
  "$[\"a.b\"]": 1,
  "$[\"a\"][\"b\"]": 2,
  "$[\"empty\"]": []
}

根 [] -> {"$":[]}
对象键 "0" -> $["0"]
数组下标 0 -> $[0]

失败门诊(高频踩坑)

两个字段合并成同一个传统路径键

原因:只有分隔符的路径无法区分字面键 a.b 与依次嵌套的 a、b;数字对象键也可能被当成数组索引。

修复:需要可逆映射时使用类型明确的路径。传统模式会拒绝歧义键,不会静默覆盖;只有整个输入满足所选分隔符的受限子集时,切换分隔符才安全。

不完整的平铺数组出现凭空补出的 null

原因:只有 $[2] 的映射缺少两个未知项;同一个节点也不能由父路径和子路径同时给出叶值。

修复:提供从零连续的索引,并让节点类型一致。本工具拒绝缺号和冲突映射;真实 null 应显式写出,空根使用 $ 叶值表示。

常见问题

类型明确的路径如何保留对象键和数组?

对象成员 0 写作 $["0"],数组下标零写作 $[0]。字面键 a.b 写作 $["a.b"],与嵌套的 $["a"]["b"] 不同。

根标量和空容器会怎样处理?

根路径是 $。例如 [] 展开为 {"$":[]},null 展开为 {"$":null}。嵌套的空对象和空数组作为叶值保留,类型不变。

什么样的平铺映射可以还原?

输入须为路径到标量或空容器的对象。数组索引必须从零连续排列。等价路径、父子叶值冲突及对象与数组混合节点都会被拒绝。

什么时候选择传统分隔符?

仅在接收系统需要点号、斜杠或下划线路径时选择。空键、含分隔符的键会被拒绝;启用数字数组段时拒绝数字对象键,关闭时拒绝数组。

大数字能精确保留吗?

整数必须位于 ±9007199254740991 内,小数文本须能按相同十进制数值回写。重复键、负零、上溢、下溢和舍入值会被拒绝。大整数 ID 与高精度小数请先改为 JSON 字符串。

有哪些容量和隐私限制?

输入最多 2 MiB、128 层、100000 个值,路径最多 8192 字符,索引为 0–99999,输出最多 8 MiB。页面不保存 JSON 草稿,统计不含键名、路径或值。

继续浏览