JSONPath 测试器
针对 JSON 数据测试 JSONPath 表达式。输入时即可看到匹配结果。
输入 JSONPath 表达式以查看匹配结果
JSONPath 技巧与窍门
掌握 JSONPath 表达式,准确提取所需数据。
从 $ 开始——根元素
每个 JSONPath 表达式都以 $ 开头,代表 JSON 文档的根。使用 $.key 访问顶级键,用点号或括号链接进行嵌套访问。
使用递归下降(..)查找任意位置的键
.. 运算符搜索所有嵌套层级。例如,$..price 查找文档中每个 price 字段,无论深度如何。这对于探索不熟悉的 JSON 结构非常有用。
使用 [?()] 过滤数组
使用过滤器表达式按条件查询数组。例如,$.books[?(@.price < 10)] 返回所有价格低于 10 的书。@ 符号指的是当前正在评估的元素。
常见 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[*].title | book 数组中的所有 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 工具,提升你的工作效率。