🔍

JSONPath 查询工具

使用 JSONPath 表达式查询和提取 JSON 数据

JSON 输入

JSONPath

示例:$.store.book[0].title, $.store.book[*], $..author

什么是 JSONPath

JSONPath 是 JSON 的查询语言,类似于 XML 的 XPath。它提供标准化语法,使用路径表达式导航和提取复杂 JSON 结构中的数据。JSONPath 使用 $ 表示根对象,. 用于子访问,[] 用于数组索引,* 用于通配符,.. 用于递归下降。它支持过滤器 [?(@.property > value)]、数组切片 [start:end:step] 和多选择器。JSONPath 广泛用于 API 测试、数据转换、配置查询和 JSON 操作任务。它简化了从深度嵌套的 JSON 中提取特定值,无需编写复杂的 JavaScript 代码。

功能特点

🔍

高级查询语法

支持完整的 JSONPath 语法,包括通配符 (*)、递归下降 (..)、数组切片 ([start:end])、过滤器 ([?(@.price < 10)])和多路径选择器
📋

路径表达式模板

预构建的常用查询模板:根访问 ($)、直接子节点 ($.key)、数组项 ($.arr[*])、过滤项 ($.arr[?(@.id)])、递归搜索 ($..key)

实时预览

即时执行查询,带语法高亮的 JSON 输入和输出,显示匹配路径、结果计数,并在源 JSON 中高亮匹配节点
💾

结果导出

将查询结果导出为 JSON(数组或单个值)、表格数据的 CSV 或格式化文本,一键复制和下载选项
🎯

Use Cases

CODE

Development workflow

Use JSONPath Query Tool during implementation to generate, inspect, format, or verify technical assets without switching to heavier project tooling.
REVIEW

Code review and cleanup

JSONPath Query Tool helps review copied snippets, generated files, configuration fragments, and implementation details before they are committed or shared.
DOC

Technical documentation

Turn practical examples from JSONPath Query Tool into clearer pull requests, runbooks, onboarding notes, and API or SDK documentation.

📋使用指南

1️⃣
输入 JSON 数据
粘贴或上传要查询的 JSON 数据
2️⃣
编写 JSONPath
输入 JSONPath 表达式或使用常见模式模板
3️⃣
执行查询
运行查询以查看带语法高亮的匹配结果
4️⃣
导出结果
以您喜欢的格式复制或下载提取的数据

📚技术介绍

📝JSONPath 语法

JSONPath 表达式以 $(根对象)开头,使用点符号 ($.property) 或括号符号 ($['property']) 进行访问。子节点使用 . 分隔符 ($.store.book),数组使用 [index] 或 [*] 表示所有项。数组切片 [start:end:step] 提取范围,如 [0:3](前 3 项)或 [-1](最后一项)。递归下降操作符 .. 搜索所有级别:$..author 查找所有 author 属性,无论嵌套深度如何。联合操作符 [,] 选择多个项:$[0,2,5] 获取特定数组索引。

🔍过滤器表达式

过滤器使用 [?(@.condition)] 语法选择匹配条件的项。@ 表示迭代中的当前节点。比较操作符:==、!=、<、<=、>、>=。逻辑操作符:&& (and)、|| (or)、! (not)。示例:[?(@.price < 10)] 选择价格低于 10 的项;[?(@.category == 'fiction' && @.price < 20)] 组合条件。正则表达式匹配:[?(@.name =~ /pattern/)] 按正则过滤。过滤器可以使用 $ 引用根以进行跨层次比较:[?(@.price < $.maxPrice)]。

🔧实现变体

JSONPath 有多个实现,语法略有不同:Goessner 的原始版本(JavaScript)、Jayway(Java)、jsonpath-ng(Python)。差异包括过滤器操作符(有些使用 @ vs $)、正则支持、脚本表达式和函数扩展。一些实现添加了函数,如 @.length、@.min()、@.max() 用于聚合。脚本表达式 [(@.price * @.quantity)] 启用计算。父操作符 ^ 和当前路径 ~ 提供上下文。始终检查目标实现的文档以了解支持的功能和语法特性。

🎯实际应用

JSONPath 在 API 响应解析中表现出色,从 REST API JSON 响应中提取特定字段,无需完全反序列化。配置管理使用 JSONPath 查询和更新嵌套配置值。数据转换管道使用 JSONPath 将源 JSON 映射到目标模式。测试框架(Postman、REST Assured)使用 JSONPath 断言验证响应结构和值。日志分析从 JSON 格式的日志中提取相关字段。GraphQL 和 OpenAPI 工具使用 JSONPath 进行模式遍历和验证。性能:对于大型 JSON,考虑流式解析器或数据库(MongoDB 的查询语法、PostgreSQL 的 jsonb_path_query)。

常见问题

为什么 JSONPath 没有匹配到结果?

请确认路径以 $ 开头、数组索引有效、字段名拼写正确。可先用更简单的路径逐步验证。
💬

如何在任意层级查找某个键?

使用递归下降:$..author 会在所有层级查找 author。
🔍

过滤器表达式怎么写?

使用 [?(@.price < 10)],@ 代表当前项;可用 &&、|| 组合条件,如 [?(@.category=='book' && @.price<20)]。
💡

空结果与 null 有何区别?

空结果表示没有匹配;null 表示匹配项的值为 null。请检查源数据与路径表达式。
📚

大 JSON 查询很慢怎么办?

避免过度使用 ..;先收窄搜索范围再做过滤。必要时分段处理或在后端预处理。

🔗相关文档

User Comments

0 / 2000
Loading...