什么是 JSONPath?
JSONPath 是一种用于 JSON 文档的查询语言,能够使用类似于 XML 的 XPath 的路径表达式从复杂的 JSON 结构中提取和过滤数据。
快速了解
| 全称 | JSONPath 查询语言 |
|---|---|
| 创建时间 | 2026-02-01 |
| 规范文档 | 官方规范 |
工作原理
JSONPath 提供了一种标准化的语法来导航和查询 JSON 数据结构。它使用点表示法和括号表示法来遍历嵌套的对象和数组,支持通配符、递归下降、数组切片和过滤表达式。JSONPath 表达式以 $ 开头表示根元素,后跟导航 JSON 结构的路径段。该语言支持简单的属性访问和复杂的过滤操作,对于从大型 JSON 响应中提取特定数据非常有价值。
主要特点
- 使用 $ 作为根元素引用
- 支持点表示法 ($.store.book) 和括号表示法 ($['store']['book'])
- 通配符 (*) 匹配当前层级的所有元素
- 递归下降 (..) 搜索所有后代
- 数组切片使用 [start:end:step] 语法
- 过滤表达式使用 ?() 进行条件选择
- 脚本表达式使用 () 进行计算值
常见用途
- 从 API 响应中提取特定字段
- 基于条件过滤数组
- 在自动化测试中测试 JSON 结构
- 数据转换管道
- 配置文件解析
示例
Loading code...常见问题
JSONPath 和 XPath 有什么区别?
JSONPath 用于 JSON 文档,而 XPath 用于 XML 文档。JSONPath 使用 $ 作为根元素并使用点/括号表示法,而 XPath 使用 / 作为路径分隔符。JSONPath 更简单但标准化程度不如具有 W3C 规范的 XPath。两者都支持过滤、通配符和递归搜索。
如何用 JSONPath 选择 JSON 数组中的所有元素?
使用通配符运算符 [*] 来选择数组中的所有元素。例如,$.items[*] 选择 'items' 数组中的所有项目。您还可以使用 $.items[*].name 从所有数组元素中获取特定属性。
JSONPath 中的递归下降运算符 (..) 是什么作用?
递归下降运算符 (..) 会搜索当前元素的所有后代。例如,$..name 会查找 JSON 文档中任何位置的所有 'name' 属性,无论其嵌套层级如何。当您不知道某个属性的确切路径时,这非常有用。
如何根据条件过滤数组元素?
使用 ?() 语法的过滤表达式。例如,$.books[?(@.price < 10)] 选择所有价格低于 10 的书籍。@ 符号表示当前正在评估的元素。您可以使用比较运算符(<、>、==、!=)和逻辑运算符(&&、||)。
JSONPath 在不同编程语言中是否标准化?
JSONPath 的实现在不同语言和库之间有所不同,因为直到 2024 年的 RFC 9535 之前没有正式标准。不同实现可能在语法上有细微差异,特别是过滤表达式和脚本表达式。请务必查阅您使用的特定库的文档以了解支持的功能。