JP

JSON 路径提取器

使用明确限定的 JSONPath 子集查询并保留结果类型

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

有限路径查询:支持 $、ASCII 点成员名、单双引号键、非负索引与 [*] / .* 通配;裸成员路径会从根开始。只访问 JSON 自身节点,数组 length 不是成员。递归、切片、联合、负索引、过滤与脚本均不支持。结果保留 JSON 类型,零匹配是有效的空结果。

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

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

页面阅读模式

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

工具说明

使用范围明确的路径语法检查 JSON:支持 $、ASCII 点成员名、单双引号键、非负索引和 [*] 或 .* 通配符。引号键支持 JSON 风格转义,也能访问包含点号或方括号的键。每条结果包含原类型值、类型与可复用的双引号路径。成员选择只读取对象自己的 JSON 键,不选择数组 length 或 JavaScript 继承属性。递归、切片、联合、负索引、过滤器与脚本均会被拒绝;零匹配属于有效空结果。可选去重保留标量类型,并区分对象键序。处理在本地完成,严格检查数值,输入最多 2 MiB,最多返回 10000 条匹配。

场景配方

01

从特殊键下提取保留类型的 API 标识

目标:区分数字 ID、字符串 ID 与显式 null,同时保留原位置。

  1. 输入 {"orders.v2":[{"id":1},{"id":"1"},{"id":null}]}。
  2. 路径输入 $["orders.v2"][*].id 并执行,核对整数、字符串、null 三种类型。
  3. 启用去重后重跑,三条仍应分别保留。复制或下载 JSON 行,再用返回路径检查其中一个值。

结果:三条结果保留 1、"1" 和 null,分别位于字面 orders.v2 键下的第 0、1、2 项。

失败门诊(高频踩坑)

熟悉的 JSONPath 表达式报错或没有结果

原因:此子集未实现递归、切片、联合、过滤器或脚本。对象键选择器也不能访问数组索引,即使两者都写成 0。

修复:使用连续成员、索引和直接子项通配符。字面键 0 选 ["0"],数组下标零选 [0]。所需表达式超出范围时,改用支持完整需求的 JSONPath 引擎。

下游导出丢失 1 与 "1" 的差别

原因:把所有结果转成显示文本会合并不同 JSON 类型;对象内容相似时,序列化键序也可能不同。

修复:导出含 value 与 type 的完整 JSON 行,不要复制表格纯文本。去重按完整 JSON 序列化比较,保留键序差异,不是忽略对象键序的相等性判断。

生产可用片段

通配符保留类型并给出可复用位置

text

输入:
{"orders.v2":[{"id":1},{"id":"1"},{"id":null}]}

查询:$["orders.v2"][*].id

路径                                类型       JSON 值
$["orders.v2"][0]["id"]             整数       1
$["orders.v2"][1]["id"]             字符串     "1"
$["orders.v2"][2]["id"]             null       null

$["orders.v2"][3].id -> [](查询有效,没有匹配)

常见问题

这是完整 JSONPath 实现吗?

不是。支持 $、ASCII 点成员、引号键、非负索引和通配符。递归、切片、联合、负索引、过滤器和脚本会报错。结果中的双引号路径是本工具可复用格式,不是 RFC 9535 的 Normalized Path。

如何选择包含点号、括号或引号的键?

使用方括号内的 JSON 字符串,例如 $["a.b"] 或 $["x]y"]。引号与反斜杠按 JSON 字符串转义,空键写作 $[""],也支持单引号键。

通配符和索引会选择什么?

[*] 和 .* 选择当前数组项或对象成员,不会递归搜索后代。[0] 选择数组项,["0"] 选择对象键。users[*].email 这样的裸路径从根开始。

为什么合法查询也可能没有匹配?

可能不存在该成员,或选择器与容器类型不同。$.length 不会读取数组的 JavaScript length 属性。合法查询没有命中的 JSON 节点时返回空数组。

去重会保留值类型吗?

会。数字 1 与字符串 "1"、null 与字符串 "null" 均不同。相等性使用完整 JSON 序列化,因此对象键序不同也会保留。路径排序按文本顺序,不按数组索引数值。

是否检查数字、容量和隐私?

重复键和序列化时会改变的数字会被拒绝;精确大整数 ID 请用字符串。输入最多 2 MiB、128 层、100000 个值,路径最多 8192 字符,匹配最多 10000 条,输出最多 8 MiB。不保存 JSON 或路径草稿,统计不含输入内容。

继续浏览