JSONPath 测试器

针对 JSON 数据测试 JSONPath 表达式。输入时即可看到匹配结果。

1
2
3
JSON Data
结果

输入 JSONPath 表达式以查看匹配结果

$.store.book[*].author
$..price
$.store.book[?(@.price<10)]

JSONPath 技巧与窍门

掌握 JSONPath 表达式,准确提取所需数据。

1

从 $ 开始——根元素

每个 JSONPath 表达式都以 $ 开头,代表 JSON 文档的根。使用 $.key 访问顶级键,用点号或括号链接进行嵌套访问。

2

使用递归下降(..)查找任意位置的键

.. 运算符搜索所有嵌套层级。例如,$..price 查找文档中每个 price 字段,无论深度如何。这对于探索不熟悉的 JSON 结构非常有用。

3

使用 [?()] 过滤数组

使用过滤器表达式按条件查询数组。例如,$.books[?(@.price < 10)] 返回所有价格低于 10 的书。@ 符号指的是当前正在评估的元素。

4

常见 JSONPath 模式

$..* 返回所有值。$.store.book[*].author 返回所有作者。$.store.book[-1:] 返回最后一本书。$.store.book[0,1] 返回前两本书。记住这些日常使用的模式。

JSONPath 功能

轻松测试和调试 JSONPath 查询。

实时表达式测试

输入 JSONPath 表达式即可看到匹配结果实时更新。

完整 JSONPath 支持

支持标准 JSONPath 语法,包括通配符、递归下降、过滤器和数组切片。

结果高亮

匹配的节点会被高亮显示,以便验证表达式是否针对正确的数据。

什么是 JSONPath?

JSONPath 是 JSON 的查询语言,类似于 XML 的 XPath。它允许使用路径表达式从 JSON 文档中提取特定值,根元素始终用 $ 表示。

快速参考

表达式说明
$根对象
$.store子属性
$.store.book[0]按索引访问数组元素
$.store.book[*]所有数组元素
$..author递归搜索(所有 "author" 字段)
$.store.book[*].titlebook 数组中的所有 title

示例

给定如下 JSON:

{
  "users": [
    { "name": "Alice", "age": 30 },
    { "name": "Bob", "age": 25 }
  ]
}

表达式 $.users[*].name 返回:["Alice", "Bob"]

JSONPath 常见问题

什么是 JSONPath?

JSONPath 是一种 JSON 查询语言,类似于 XML 的 XPath。它允许您使用路径表达式从 JSON 文档中提取特定数据。

支持哪些表达式?

支持标准 JSONPath 表达式,包括 $(根)、.(子级)、..(递归)、*(通配符)、[](下标)、[?()](过滤器)等。

可以使用过滤器吗?

可以,支持过滤器表达式,用于根据条件查询元素,例如按价格筛选书籍或其他属性。

点号表示法和括号表示法有什么区别?

两者都可以访问子属性:$.store.book 和 $['store']['book'] 是等价的。当键包含特殊字符、空格或以数字开头时使用括号表示法。

JSONPath 和 jq 有什么区别?

JSONPath 是用于从 JSON 中提取数据的查询语言,类似于 XML 的 XPath。jq 是一个更强大的命令行 JSON 处理器,具有过滤、转换和输出格式化功能。

可以选择多层嵌套的值吗?

可以,使用递归下降运算符(..)搜索所有层级。例如,$..name 查找所有 name 字段,无论深度如何。

应该了解哪些常见的 JSONPath 模式?

关键模式:$..* 所有值,$.items[*].name 所有名称,$.items[-1:] 最后一项,[?(expression)] 按条件过滤,$.items[0:5] 前五项。

相关工具

探索更多 JSON 工具,提升你的工作效率。