← 返回首页

JSON Path 查询

输入 JSON 数据和 JSONPath 表达式,实时提取匹配结果。


        

JSON Path 在线查询 是什么?

JSON Path 在线查询工具用来干一件事:把一段 JSON 丢进去,再写一条 JSONPath 表达式,立刻看到匹配到的节点。它解决的是「JSON 太大、层级太深、肉眼翻不动」的问题。比如你从接口拿到一份 300KB 的订单 JSON,里面有 200 条记录,每条又嵌套了用户、商品、物流三层,你只想确认所有订单里 status 为 "paid" 的 orderId 有哪些,手点折叠树要点上百次;直接写 $.data.orders[?(@.status=='paid')].orderId 就能一次列出来。写代码调试、对接口返回值、查配置文件、核对埋点数据时都能用。所有解析和匹配都在浏览器本地跑,数据不出本机。

使用步骤

  1. 把 JSON 粘贴进左侧输入框,或点「示例」载入内置的 $.store.book 样例数据(含 4 本书、bicycle 价格 19.95)。
  2. 在表达式框输入 JSONPath,例如 $.store.book[*].author,注意根节点用 $,子节点用点号或方括号。
  3. 点「查询」或直接看实时结果,匹配到的节点会以高亮 JSON 形式显示在右侧,并标注命中数量。
  4. 需要过滤时用过滤表达式,如 $.store.book[?(@.price < 10)].title,比较运算符支持 ==、!=、<、<=、>、>=。
  5. 结果可一键复制或下载为 .json 文件;若返回空数组,先检查键名大小写和数组下标是否从 0 开始。

对比:用它还是手工做?

对比维度本工具手工/替代做法
查询 200 条嵌套记录输入表达式后约 50ms 内返回全部匹配在编辑器里逐层折叠展开,通常要 3 到 10 分钟
过滤条件支持 ==、!=、<、<=、>、>= 及 &&、|| 组合靠肉眼比对或写临时脚本,改一次条件要重跑一次
环境依赖浏览器打开即用,无需安装需装 Python/Node 并引入 jsonpath 库,约 10 到 30MB 依赖
数据隐私全程本地,0 次网络上传在线接口类工具会把 JSON 发到远端服务器
结果导出一键复制或下载 .json手工摘抄易漏,脚本需自己写文件输出逻辑

常见问题

JSONPath 和 JSON 有什么区别?

JSON 是数据格式,JSONPath 是查询语法,类似 XPath 之于 XML。JSON 用 {} 和 [] 描述结构,JSONPath 用 $ 表示根、. 或 [] 取子节点、* 通配、.. 递归下降。例如 $.store.book[0].title 只取第 1 本书标题,而 $.store.book[*].title 会返回全部 4 本。它本身不是标准文件格式,RFC 9535 在 2024 年才把它规范化为正式标准。

数组下标从几开始?

从 0 开始。$.store.book[0] 是第 1 本,[1] 是第 2 本。负数下标在部分实现里表示倒数,如 [-1] 取最后一个,但 RFC 9535 未强制要求,本工具按常见实现支持。切片写法 [start:end:step] 左闭右开,例如 [0:2] 取前 2 个元素,[::2] 每隔一个取一个。越界下标返回空结果,不会报错。

过滤表达式怎么写?

格式是 [?(@.字段 运算符 值)],@ 代表当前节点。支持 ==、!=、<、<=、>、>=,字符串要加单引号,如 [?(@.price < 10)] 或 [?(@.category=='fiction')]。多个条件用 && 和 || 连接,例如 [?(@.price < 10 && @.stock > 0)]。注意数字不要加引号,否则会按字符串比较,'10' < '9' 会成立。

递归下降 .. 有什么用?

.. 表示在任意深度查找同名键,不管嵌套多少层。比如 $..author 会扫描整份 JSON,把所有叫 author 的字段值都找出来,样例数据里会返回 4 个作者名。它很方便但代价高:对 1MB 的 JSON,递归下降通常比精确路径慢 5 到 20 倍,因为要遍历每个节点。数据量大时优先写明确路径,如 $.store.book[*].author。

为什么查询结果是空的?

常见原因有 4 个:键名大小写不匹配(JSON 区分大小写,Name 和 name 不同);路径多写或少写了一层,比如实际是 $.data.list 却写成 $.list;过滤条件类型不对,数字字段用了引号;JSON 本身格式错误,比如末尾多了逗号或用了单引号。先确认 JSON 能正常解析,再逐段缩短表达式定位问题。

数据会上传到服务器吗?

不会。JSON 解析、JSONPath 匹配、结果渲染全部在浏览器里用 JavaScript 完成,没有网络请求发送你的数据。你可以打开开发者工具的 Network 面板,查询过程中不会出现携带 JSON 内容的请求。断网状态下工具依然可用。这也意味着结果只存在当前页面,刷新或关闭标签页后输入内容不会保留。

适用范围:标准 JSON(RFC 8259),支持对象、数组、字符串、数字、布尔、null。JSONPath 语法参考 RFC 9535,覆盖 $、.、[]、*、..、切片和过滤表达式;函数扩展(如 length()、count())未全部实现。单个文件建议不超过 5MB,超过后浏览器渲染会明显变慢。精度方面,数字按 IEEE 754 双精度解析,超过 2^53 的整数可能丢精度。隐私:所有计算在浏览器本地完成,不上传、不存储、不记录。

浙ICP备2026073450号