JSONPath 测试 — 在线表达式求值与调试器
JSONPath 测试器和求值器,实时表达式求值。支持点号/括号表示法、通配符、递归下降和过滤器表达式。内置常用示例库。
功能特性
- ✓实时 JSONPath 求值——输入表达式后立即显示查询结果
- ✓完整的 JSONPath 语法支持:点号表示法、括号表示法、通配符和递归下降
- ✓数组切片操作符 [start:end:step] 用于提取 JSON 数据子数组
- ✓过滤器表达式 [?(@.key comparison value)] 支持条件数据提取
- ✓递归下降 (..) 搜索深层嵌套的 JSON 结构中的匹配键
- ✓内置路径示例库,提供常用 JSONPath 模式供快速学习
- ✓匹配计数显示,一目了然知道表达式返回了多少结果
- ✓格式化 JSON 输出带语法高亮,方便检查结果
- ✓一键复制结果到剪贴板,用于代码或文档中
- ✓JSON 验证功能,对无效输入或错误路径给出清晰错误提示
- ✓支持负数数组索引(如 [-1] 表示最后一个元素)
- ✓支持 length() 函数计算数组元素数量
使用方法
- 1在左侧文本框中粘贴或输入 JSON 数据。编辑器实时验证 JSON 格式——绿色指示有效,红色表示有错误。
- 2在输入框中输入 JSONPath 表达式,以 $ 开头。例如 $.store.book[*].title 选择所有书名。
- 3使用示例路径下拉菜单加载常用 JSONPath 模式,观察它们如何作用于数据。
- 4在右侧面板查看查询结果——匹配值以格式化 JSON 显示,并带有匹配计数。
- 5点击复制按钮将结果复制到剪贴板,或使用清除按钮重置工作区。
- 6尝试过滤器表达式如 [?(@.price < 10)] 来提取符合条件的数据。
- 7尝试数组切片语法 [start:end:step],类似 Python——如 $..book[0:2] 选取前两本书。
- 8使用递归下降 $..* 探索 JSON 文档中的每个值。
- 9在单个表达式中组合多种 JSONPath 操作符——例如 $..book[?(@.price > 10)].title 可在任何嵌套层级查找价格超过 10 的所有书名。
常见问题
什么是 JSONPath?
∨
JSONPath 是一种针对 JSON 的查询语言,类似于 XML 的 XPath。它提供了一种简单的方法来导航、过滤和提取复杂 JSON 文档中的特定数据。JSONPath 由 Stefan Gössner 创建,现已广泛应用于多种编程语言和工具中。它使用简洁的语法,结合了点号表示法(类似 JavaScript)和受 XPath 启发的递归下降和过滤器表达式等功能。
支持哪些 JSONPath 语法?
∨
本工具支持以下最常用的 JSONPath 操作符:
• `$` — 根对象(所有路径以此开头)
• `.key` 或 `['key']` — 子操作符,访问对象属性
• `..` — 递归下降,搜索嵌套结构
• `*` — 通配符,选择所有元素或属性
• `[n]` — 数组索引(支持负索引反向访问)
• `[start:end:step]` — 数组切片操作符
• `[?(expression)]` — 过滤器表达式,支持 ==、!=、<、>、<=、>=
• `@` — 过滤器表达式中的当前节点引用
• `length()` — 获取数组长度的函数
JSONPath 与 XPath 有何不同?
∨
JSONPath 之于 JSON 就像 XPath 之于 XML。虽然它们有相似的概念(路径表达式、通配符、谓词/过滤器),但存在关键差异:
• JSONPath 使用 $ 表示根元素,XPath 使用 /
• JSONPath 使用 . 访问子节点,XPath 使用 /
• JSONPath 使用 .. 递归下降,XPath 使用 //
• JSONPath 使用 [n] 进行数组索引(从0开始),XPath 使用 [n+1](从1开始)
• JSONPath 使用 [?()] 做过滤器,XPath 使用 [谓词]
• JSONPath 使用 @ 表示过滤器中的当前节点,XPath 也使用 @ 但表示属性
过滤器表达式如何工作?
∨
JSONPath 中的过滤器表达式使用 `[?(expression)]` 语法来条件性地选择数组元素。表达式对每个元素求值,`@` 代表当前元素。常见模式:
• `[?(@.price < 10)]` — price 小于 10 的元素
• `[?(@.author == 'Tolkien')]` — author 等于 'Tolkien' 的元素
• `[?(@.stock)]` — stock 属性为真值的元素
支持的运算符:==、!=、<、>、<=、>=。字符串字面量需要引号(单引号或双引号),数字字面量不需要。
JSONPath 中的递归下降 (..) 是什么?
∨
`..` 操作符(递归下降)搜索 JSON 结构的所有嵌套层级,寻找匹配的属性名。例如,`$..price` 会在文档的任何深度查找所有 price 属性,无论它在第一层、嵌套对象内部还是数组元素内部。这对于从深层嵌套结构中提取所有给定键的值非常有用,无需指定完整路径。使用 `$..*` 可以选择文档中的每一个值。
JSONPath 支持数组切片吗?
∨
支持。JSONPath 使用 `[start:end:step]` 语法支持数组切片,类似于 Python 的切片表示法:
• `[0:3]` — 前三个元素(索引 0、1、2)
• `[5:]` — 从索引 5 到末尾
• `[:3]` — 前三个元素
• `[::2]` — 每隔一个元素
• `[-1:]` — 最后一个元素
• `[-3:-1]` — 倒数第三个和倒数第二个元素
切片索引可使用负数从数组末尾开始计数。
我的 JSON 数据会被发送到服务器吗?
∨
不会。所有处理——JSON 解析、JSONPath 求值和结果格式化——完全在浏览器中进行。你的 JSON 数据和路径表达式永远不会离开你的设备。没有后端服务器、没有 API 调用、没有数据收集。页面加载后甚至可以断网继续使用。这使得它可以安全地处理敏感或机密 JSON 数据。
JSONPath 的常见用例有哪些?
∨
JSONPath 广泛用于:
• 从 API 响应中提取特定字段(如获取所有用户邮箱)
• 基于条件过滤数组(如金额超过 $100 的订单)
• 导航深层嵌套的 JSON 结构,无需编写复杂的循环
• 开发过程中测试 API 端点响应
• 数据转换和 ETL 管道
• 验证 JSON 数据结构包含预期的值
• 调试复杂 JSON 文档,探索其内容
• 查询基于 JSON 的数据库或配置文件
如何处理 JSON 或 JSONPath 语法错误?
∨
工具实时验证 JSON 数据和 JSONPath 表达式。JSON 错误:检查缺少逗号、尾逗号、未加引号的键或不匹配的括号。JSONPath 错误:确保路径以 $ 开头,检查括号匹配,验证过滤器表达式使用正确的比较运算符。
点号表示法和括号表示法有什么区别?
∨
点号表示法($.store.book[0].title)对简单属性访问更简短易读。括号表示法($['store']['book'][0]['title'])在属性名包含特殊字符(空格、点号、括号)或使用变量时必需。工具有两种都支持,可以自由混用。