JSONPath 在线测试与调试工具
粘贴 JSON 并输入 JSONPath,即时查看匹配节点、标准化路径和结果类型。支持树形定位、查询历史与常用示例,所有数据均在浏览器本地处理。
如何使用本工具
1粘贴或上传 JSON
在编辑器中粘贴接口响应或配置文件,也可上传本地文本文件。校验通过后可切换代码、树形与表格视图。
2输入 JSONPath 并运行
在查询栏输入表达式,点击「运行」或使用 Ctrl/Cmd + Enter。合法查询会列出全部匹配结果;非法查询显示明确错误。
3查看结果并复制路径
点击结果可在树形/代码视图定位节点。可复制标准化 JSONPath、JSON Pointer、JavaScript optional chaining 路径或节点值。
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 教程文章有什么不同?
- 教程页用于系统学习语法与概念;本页用于粘贴数据后立即调试。可从相关教程进入学习,再回到本工具验证。
- 结果太多怎么办?
- 结果列表使用虚拟滚动,并限制单次渲染规模。若被截断,请收窄表达式后重试。