JSONPath 查询
用 JSONPath 表达式从 JSON 里查询、筛选、提取数据,支持 $ 根节点、.key、[0]、[*]、.. 递归,以及过滤表达式 [?(@.age > 18)](可写 == != > >= < <= 与 && || !、括号)。
按路径表达式提取与筛选 JSON 数据
JSONPath 查询是什么
JSONPath 是一种用于定位和提取 JSON 数据的路径表达式。它可以从对象、嵌套对象和数组中快速找到需要的字段,也可以通过过滤条件筛选符合要求的数组元素。本工具适合查询 API 响应、配置文件、日志数据以及其他 JSON 文档。
JSONPath 基本语法
$ 表示 JSON 根节点;$.users 表示访问根节点下的 users 属性;$.users[0] 表示取得数组第一个元素;$.users[*] 表示取得数组中的全部元素;$.users[*].name 表示取得 users 数组中每个元素的 name;$..price 表示递归查找任意层级下名为 price 的属性。
数组下标支持负数,例如 [-1] 可以定位数组最后一个元素。使用通配符 [*] 时,可以一次查询数组中的全部元素。
如何使用 JSONPath 过滤数组
需要按照字段值筛选数组元素时,可以使用 [?()] 过滤表达式。例如 $.users[?(@.age > 18)] 会筛选 age 大于 18 的用户。@ 表示当前数组元素,条件中的属性可以通过 @.field 访问。
过滤条件支持 ==、!=、>、>=、<、<= 比较运算符,也支持使用 &&、|| 和 ! 组合多个条件,并可以使用括号调整条件优先级。例如 $.users[?(@.age >= 18 && @.active == true)] 可以筛选年龄至少为 18 且 active 为 true 的元素。
JSONPath 查询结果怎么看
查询完成后,结果区会显示匹配到的数据及其路径。路径使用 JSONPath 表示,例如 $.users[0].name,可以帮助你确认具体命中了哪个字段或数组元素。
下方同时提供标准 JSON 数组结果,可以直接复制或下载为 JSON 文件。统计信息会显示命中数量;没有匹配结果时会明确提示无结果。为了避免页面过长,结果卡片最多展示前 200 条,但完整匹配结果仍会保留在 JSON 输出中。
常用 JSONPath 表达式
页面提供常用表达式按钮,可以直接查询示例数据。例如 $ 查询整个 JSON,$.users 查询 users,$.users[*].name 查询所有用户名称,$..price 查询任意层级的 price 字段,$.users[?(@.age > 18)] 则用于按年龄筛选数组。
这些表达式可以作为模板修改字段名、数组下标和过滤条件,用于学习 JSONPath 语法或快速定位实际 JSON 数据。
如何查询本地 JSON 文件
切换到文件上传页签后,可以将 .json 文件拖入页面,或者点击选择文件。文件会直接在浏览器中读取,单文件上限为 10 MB;文件载入后会使用当前 JSONPath 表达式自动执行查询。
JSONPath 查询无结果怎么办
如果表达式没有报错但结果为空,首先检查 JSON 的实际层级和数据类型。例如 users 是数组时通常需要使用 $.users[*] 或 $.users[0],不能把数组直接当成对象使用 $.users.name。需要查找嵌套层级中的同名字段时,可以尝试 $..name。
如果过滤表达式没有结果,再检查字段名称、字段类型和比较条件是否一致。例如数字 18 与字符串 \"18\" 的比较结果可能不同。表达式本身出现语法错误时,检查 $、点号、方括号和 ?() 是否完整闭合。
本工具支持的 JSONPath 范围
当前支持根节点 $、属性访问、数组下标、负数下标、通配符 [*]、递归下降 .. 和 [?()] 过滤表达式。过滤条件支持 ==、!=、>、>=、<、<=、&&、||、! 以及括号。工具不声称支持完整 JSONPath 标准中的全部扩展语法。
JSONPath 怎么写?
JSONPath 使用路径表达式定位 JSON 数据:$ 表示根节点,.key 访问属性,[0] 访问数组元素,[*] 匹配全部元素,$..key 可以递归查找任意层级的同名属性。
需要筛选数组时,可以使用 [?(@.age > 18)] 这样的过滤表达式,按字段值选择符合条件的元素,并使用 &&、|| 和 ! 组合多个条件。
- 支持 $、.key、数组下标 [0]、负数下标、通配符 [*] 与递归下降 $..key
- 支持 [?()] 过滤表达式,可按字段值筛选 JSON 数组元素
- 过滤条件支持 ==、!=、>、>=、<、<= 以及 &&、||、! 组合
- 结果显示匹配路径和值,并提供标准 JSON 数组输出,可复制或下载
- 上传 JSON 文件时单文件上限 10 MB,载入后自动按当前表达式查询
- 全部在浏览器本地完成,输入内容不上传服务器