JSONPath 在线测试与调试工具

粘贴 JSON 并输入 JSONPath,即时查看匹配节点、标准化路径和结果类型。支持树形定位、查询历史与常用示例,所有数据均在浏览器本地处理。

JSON
Ctrl / ⌘ + Enter 运行

请先修正 JSON 错误,再运行 JSONPath。

支持 RFC 9535:成员选择、下标、通配、切片、后代、过滤器与函数表达式。

如何使用本工具

  1. 1粘贴或上传 JSON

    在编辑器中粘贴接口响应或配置文件,也可上传本地文本文件。校验通过后可切换代码、树形与表格视图。

  2. 2输入 JSONPath 并运行

    在查询栏输入表达式,点击「运行」或使用 Ctrl/Cmd + Enter。合法查询会列出全部匹配结果;非法查询显示明确错误。

  3. 3查看结果并复制路径

    点击结果可在树形/代码视图定位节点。可复制标准化 JSONPath、JSON Pointer、JavaScript optional chaining 路径或节点值。

  4. 4使用示例库与历史

    从示例库一键加载常见写法,或从本地历史(最多 20 条)再次运行表达式。历史只保存表达式,不保存你的 JSON 数据。

JSONPath 是什么

  • 定位与提取结构化数据

    JSONPath 是面向 JSON 的查询语言(RFC 9535)。用 $ 表示根节点,通过成员选择、下标、通配、切片、后代选择与过滤器匹配一个或多个节点,适合接口调试、断言与字段提取。

  • 与本站教程页的分工

    本页是可立即运行的测试工具;教程文章侧重语法讲解与概念对比。两者互相内链,但标题与正文定位不同,避免抢占同一搜索意图。

JSONPath 常用语法速查表

以下语法由本工具基于 jsonpath-rfc9535 执行,对齐 RFC 9535。函数表达式需写在过滤器内(例如 [?match(@.name, "^A")]),不能作为不以 $ 开头的独立查询。

根节点
$
成员选择
$.name
$['name']
下标 / 通配
$[0]
$[*]
切片
$[1:5]
后代选择
$..name
过滤器
$[?@.price < 100]

RFC 9535 与旧版 JSONPath 的差异

RFC 9535 规范化了过滤器语义、标准化路径写法与函数扩展(length、count、match、search、value)。旧库(如部分 Goessner 风格实现)可能允许非标准写法或不同的比较规则。

本工具明确基于 RFC 9535 实现库,不宣称兼容所有历史方言。若表达式来自旧教程无法运行,请按 RFC 9535 改写后再试。

JSONPath、JSON Pointer、optional chaining 的区别

JSONPath:查询语言,可返回多个匹配节点,适合筛选与提取。

JSON Pointer(RFC 6901):精确定位单个位置的路径,常用于 JSON Patch;~ 与 / 需转义为 ~0 / ~1。

JavaScript optional chaining:用于业务代码安全访问,例如 data?.users?.[0]?.["profile.name"]。含空格、点号等特殊字符的键使用方括号形式。

常见错误

忘记以 $ 开头,或把函数写成顶层 length($.a) 这类非查询形式。

对含点号的键写成 $.profile.name(会被当成嵌套成员),应使用 $['profile.name']。

修改 JSON 后继续信任旧结果——本工具会提示「数据已变更,请重新运行」。

在超大文件上使用 $..* 等宽匹配导致超时:请缩小范围或改用更具体的路径。

工具能力

  • RFC 9535 查询执行

    支持成员/下标/通配/切片/后代/过滤器及过滤器内函数表达式,结果含类型、预览与标准化路径。

  • 三视图联动

    代码、树形、表格共享同一 JSON、查询表达式与选中节点;点击结果可定位原始节点。

  • 本地优先与性能模式

    解析与查询在浏览器 Web Worker 中执行;较大文件进入性能模式提示,避免主线程假死。

常见问题

数据会上传到服务器吗?
不会。JSON 与查询均在浏览器本地处理,统计埋点也不上报表达式或节点内容。
是否完整支持所有历史 JSONPath 方言?
否。本工具基于 RFC 9535。旧教程中的非标准语法可能报错,请按标准改写,或查看错误提示定位问题。
和 JSON Path 教程文章有什么不同?
教程页用于系统学习语法与概念;本页用于粘贴数据后立即调试。可从相关教程进入学习,再回到本工具验证。
结果太多怎么办?
结果列表使用虚拟滚动,并限制单次渲染规模。若被截断,请收窄表达式后重试。