什么是 JSONPath?

JSONPath 是一种用于 JSON 文档的查询语言,能够使用类似于 XML 的 XPath 的路径表达式从复杂的 JSON 结构中提取和过滤数据。

快速了解

全称JSONPath 查询语言
创建时间2026-02-01
规范文档官方规范

工作原理

JSONPath 提供了一种标准化的语法来导航和查询 JSON 数据结构。它使用点表示法和括号表示法来遍历嵌套的对象和数组,支持通配符、递归下降、数组切片和过滤表达式。JSONPath 表达式以 $ 开头表示根元素,后跟导航 JSON 结构的路径段。该语言支持简单的属性访问和复杂的过滤操作,对于从大型 JSON 响应中提取特定数据非常有价值。

主要特点

  • 使用 $ 作为根元素引用
  • 支持点表示法 ($.store.book) 和括号表示法 ($['store']['book'])
  • 通配符 (*) 匹配当前层级的所有元素
  • 递归下降 (..) 搜索所有后代
  • 数组切片使用 [start:end:step] 语法
  • 过滤表达式使用 ?() 进行条件选择
  • 脚本表达式使用 () 进行计算值

常见用途

  1. 从 API 响应中提取特定字段
  2. 基于条件过滤数组
  3. 在自动化测试中测试 JSON 结构
  4. 数据转换管道
  5. 配置文件解析

示例

loading...
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 之前没有正式标准。不同实现可能在语法上有细微差异,特别是过滤表达式和脚本表达式。请务必查阅您使用的特定库的文档以了解支持的功能。

相关工具

相关术语

相关文章