JSONPath测试器 - Free Online Tool | PivaBox

测试JSONPath表达式,实时显示查询结果

JSONPath 测试器 — 在 JSON 数据上实时评估和调试 JSONPath 表达式,支持完整语法参考和示例数据

  1. 将 JSON 数据粘贴或输入到输入区域——工具在您输入时验证 JSON 并高亮语法错误及具体行号引用。JSONPath 之于 JSON 如同 XPath 之于 XML——一种用于导航和从 JSON 文档中提取数据的查询语言。代码中的 json.parse() 返回整个对象,而 JSONPath 让您精确地仅提取所需数据:$.store.book[*].title 在单个表达式中提取书店 JSON 的所有书名,相当于 JavaScript 中的 data.store.book.map(b => b.title)。JSONPath 广泛用于 API 测试、数据转换管线、配置管理和无代码/低代码平台。
  2. 在第二个输入框中输入JSONPath 表达式。工具支持完整的 JSONPath 语法:点表示法$.store.book)直接访问子级,方括号表示法$['store']['book'])用于包含特殊字符的键,通配符*.price)匹配任意键,数组切片[0:3] 前三个元素,[-3:] 最后三个),递归下降$..author 查找任意嵌套深度的所有 'author' 键),联合选择器[0,2,4] 特定索引),过滤表达式[?(@.price < 10)] 按子值过滤,支持比较运算符和逻辑运算符),以及过滤表达式中的当前节点引用(@)。
  3. 输入时工具实时评估表达式并显示匹配结果。成功匹配显示为提取的 JSON 值(字符串、数字、对象或数组)及匹配计数——您可以用眼睛确认表达式选择了数据的哪些部分。JSONPath 表达式的语法错误会被捕获并以描述性消息报告。提供了一组默认的示例 JSON 数据集(含嵌套书籍、作者和价格的书店目录),方便您立即开始实验。所有评估使用 jsonpath-plus 库在浏览器中本地运行——您的 JSON 数据(可能包含 API 密钥或业务数据)永远不会离开设备。

Frequently Asked Questions

JSONPath 与 jq、JMESPath 或 JSON Pointer 等替代方案相比如何?

每种 JSON 查询语言服务于不同的需求和生态系统。<strong>JSONPath</strong>(RFC 9535,2024 年标准化)是最广泛实现的——支持 JavaScript、Java(Jayway JsonPath)、Python(jsonpath-ng)、.NET 以及 Postman 和 Karate 等测试工具。它是跨平台 JSON 查询的安全默认选择。<strong>jq</strong> 是一个用于 JSON 转换的完整编程语言,具有独特的语法——比 JSONPath 强大得多(支持变量、函数、算术、字符串操作、条件判断),但需要安装 jq 二进制并学习新语言。复杂 CLI 数据处理使用 jq;应用代码内的简单提取使用 JSONPath。<strong>JMESPath</strong>(AWS 的查询语言)在表达能力上与 JSONPath 相似但使用函数调用语法;它是 AWS CLI 和 SDK 中的标准。<strong>JSON Pointer</strong>(RFC 6901)最简单——仅支持精确路径访问如 <code>/store/book/0/title</code>,无通配符或过滤器;主要用于 JSON Schema 和 JSON Patch。PivaBox JSONPath 测试器以即时反馈帮助学习和调试 JSONPath 表达式——所有处理在浏览器中进行。

JSONPath 中的过滤表达式是什么?它们如何处理嵌套对象和数组?

过滤表达式是 JSONPath 最强大的功能——根据对每个元素评估的条件选择数组元素。语法为 <code>[?(expression)]</code>,其中 <code>@</code> 指代正在测试的当前元素。示例:<code>$.store.book[?(@.price &lt; 10)]</code>——所有低于 10 元的书籍;<code>$.store.book[?(@.category == 'fiction')]</code>——所有小说类书籍;<code>$.store.book[?(@.price &lt; 10 && @.category == 'fiction')]</code>——便宜的小说(AND 逻辑);<code>$.store.book[?(@.isbn)]</code>——有 ISBN 字段的书籍(真值检查,查找可选字段)。过滤器可比较:字面量(单引号字符串、数字、布尔值 <code>true</code>/<code>false</code>、<code>null</code>)、使用点或方括号表示法的 <code>@</code> 子属性、以及其他过滤器(有限嵌套)。常见陷阱:字符串比较区分大小写;<code>null</code> 比较需要 <code>@.field == null</code>;标准 JSONPath 不支持正则匹配(某些实现作为扩展添加)。PivaBox JSONPath 测试器使用 jsonpath-plus 库,支持完整的 RFC 9535 过滤语法。

我可以使用 JSONPath 修改 JSON 数据吗?还是它像 XML 的 XPath 一样是只读的?

标准 JSONPath(RFC 9535)是<strong>只读查询语言</strong>——它选择和提取数据但不修改。这反映了原始设计理念:JSONPath 定位节点,应用代码决定如何处理它们。然而,一些实现添加了变更功能作为扩展:<strong>jsonpath-plus</strong>(本工具使用的库)支持 <code>JSONPath({path, json, callback})</code> 模式,传入回调函数接收每个匹配值并返回修改后的值。实践中,大多数 JSON 修改在应用代码中完成:(1) 将 JSON 解析为原生对象,(2) 导航到目标位置(可选使用 JSONPath 查找),(3) 直接变更对象,(4) 序列化回 JSON。对于声明式 JSON 转换,考虑 <strong>jq</strong>(明确设计用于转换)或 <strong>JSON Patch</strong>(RFC 6902)定义以操作序列(add、remove、replace、move、copy、test)描述 JSON 修改的标准化格式。PivaBox JSONPath 测试器专注于查询/选择用例——所有评估在浏览器中客户端运行。