跳到主要内容

JSONPath / JMESPath 查询测试器, 实时拿值 + 高亮路径

JSONPath / JMESPath 查询测试器, 粘 JSON 写 query, 实时看到匹配值 + 路径在原 JSON 中高亮。

  • 本地处理
  • 分类 开发运维
  • 适合 格式化、校验、压缩或检查和代码相关的文本。
语法
示例
汇总
匹配数量
4
匹配值
[
  "Nigel Rees",
  "Evelyn Waugh",
  "Herman Melville",
  "J. R. R. Tolkien"
]
匹配路径
  • $['store']['book'][0]['author']
  • $['store']['book'][1]['author']
  • $['store']['book'][2]['author']
  • $['store']['book'][3]['author']
解析全部跑在你这个浏览器标签页里, JSON 与查询都不离开本机。

这个工具能做什么

在线 JSONPath 与 JMESPath 查询测试工具。粘任意 JSON, 一个按钮切换 两种查询语法, 边敲边看匹配到的值和命中路径。内置经典 bookstore 样例, 直接试 `$.store.book[*].author`、过滤器 `[?(@.price < 10)]`、 切片、递归下钻、正则匹配。语法报错会指明出错位置, 当场就能改。 一键复制等价的 jq 命令或 JS `.map().filter()` 写法, 把同一个查询 带回终端或代码里。100% 浏览器本地, 数据不上传。

工具细节

输入
文本 + 数值 + 结构化内容
页面会根据工具类型展示文本框、数值控件、文件选择或结构化输入。
输出
即时结果 + 复制
结果区优先给出可操作结果,支持项会显示复制、下载或可视化预览。
隐私
浏览器本地处理
主工具逻辑未发现外部 API 调用,输入通常留在当前标签页内处理。
保存 / 分享
可分享链接状态
关键设置会进入 URL,复制链接后别人能复现同一组参数。
性能预算
首屏 JS ≤ 22 KB
没有声明 WASM 依赖,适合快速打开和移动端使用。
适用场景
开发运维 · 程序员
分类和职业标签用于推荐相关工具、组织内链,并帮助用户快速判断是否适合当前任务。

怎么用

  1. 1. 输入

    把内容粘贴或拖入工具面板。

  2. 2. 处理

    点击按钮,在浏览器内本地处理,文件不上传。

  3. 3. 复制 / 下载

    一键复制结果或下载到本地。

JSONPath / JMESPath 查询测试器 适合怎么用

适合穿插在写代码、查问题、做 Review、上线前的小任务里。

适合开发场景

  • 格式化、校验、压缩或检查和代码相关的文本。
  • 把片段整理好再放进文档、工单、提交或交接材料。
  • 不切换工具,快速检查一个小 payload。

开发检查项

  • 压缩、混淆这类不可逆处理,先对副本操作。
  • 除非确认工具本地处理,不要粘贴密钥和敏感片段。
  • 转换后的代码上线前,仍要跑自己的测试或 lint。

下一步可以接着做

这些入口会把当前任务接到更完整的工具链里。

  1. 1 CSV ⇄ JSON 互转 CSV 与 JSON 双向转换 —— 支持引号内逗号 / 换行 / 自定义分隔符 —— 浏览器本地 打开
  2. 2 JSON 格式化与校验 浏览器内即时格式化、校验、压缩 JSON,数据不离开本地。 打开
  3. 3 正则测试 实时测 JavaScript 正则 —— 匹配高亮 / 捕获组 / 替换预览 / 标志可调 —— 浏览器本地 打开

真实使用场景

  • 从 3 KB 书店目录里捞出所有作者名

    ssh 上服务器, `cat catalog.json | pbcopy`, 粘到这里, 敲 `$.store.book[*].author`, 右栏立刻列出 4 个名字加各自完整路径 (`$['store']['book'][0]['author']` 这种)。复制值, 粘到 CSV, 收工。整个流程大概 12 秒, 终端腾出来干下一件事。

  • 跨层数组里挑出所有低于 10 块的商品

    某个商品接口返回 `data.categories[*].items[]`, 上百条数据, price 字段藏在 4 层之下。粘进来, 写 `$..items[?(@.price < 10)]`, 立刻看见哪些条目满足 —— 右边是值, 左边是路径。比每次产品同学 问 "今天 10 块以下有哪些" 就写个一次性 Node 脚本省事多了。

  • 验证所有租户的 feature flag 都生效了

    新 flag 上线, 想确认线上所有租户的 `tenants[*].flags.beta` 都 打开了。粘 dump 进来, 写 `$.tenants[?(@.flags.beta == true)].id`, 匹配数告诉你有多少个租户灰度上了。数字不对的时候, 路径列表 直接指出是哪个租户没生效, 完全不用写 SQL。

  • AWS CLI --query 上线前先在浏览器里试一遍

    AWS CLI 的 `--query` 用的就是 JMESPath。你要跑 `aws s3api list-objects-v2 --query "Contents[?Size < `1000`].Key"`, 先把示例响应粘到这里, 顶上切到 JMESPath, 同样的 query 跑一遍。 结果对就拿去线上跑, 不对就在浏览器里改, 不用浪费一次真实 API 调用。

  • 从 webhook payload 里只挑你需要的字段

    GitHub webhook 18 KB, 你只关心 `commits[*].author.email`。粘 JSON, 写路径, 复制 "匹配值" 那一栏 (已经是裁好的邮箱数组 JSON), 喂 给下游脚本。完全不用拼一长串 `grep | jq` 还容易打错字。

  • 用实时例子教 JSONPath 语法

    给新人讲 "递归下钻"。粘上 bookstore 示例, 敲 `$..price`, 指 着结果: 任意深度的 price 全部列出, 带完整路径。再切到 `$.store.book[*].price` 对比一下。比截图 README 快得多 —— 链接 直接带查询参数, 发过去他打开就是一样的。

常见踩坑

  • 过滤里忘了写 `@.` 前缀。`[?(price < 10)]` 解析不过, 过滤上下文是当前数组元素, 必须写成 `[?(@.price < 10)]`。JMESPath 才能省 `$` 和 `@`, JSONPath 不能省 `@`。

  • 拿字符串跟数字比。如果 JSON 里 `price` 是 `"8.95"` (带引号), `[?(@.price < 10)]` 一条都不匹配, 因为 `"8.95" < 10` 是 false。要么 JSON 出来时就是数字, 要么改成 `[?(@.price)]` 只测存在性。

  • 把 `..` 当成 "跳层通配"。`$..book` 是 "任意深度的 book 字段", 不是 "根下面某处的 book" —— 如果 JSON 里好几个不相干的地方都叫 book, 全会被捞出来。需要锁定时把完整前缀写出来。

隐私说明

JSON 数据、查询语句、解析出来的 AST、求值过程, 每一步都跑在你 这个浏览器标签页里。没有上传, 没有针对粘贴内容的统计, 也不会 记录你写过的查询。用的时候打开 DevTools 的网络面板看, 没有 任何请求带着 payload 出去。生产环境响应、内部 ID、Token, 这些 不能贴公开 gist 的内容, 都可以放心粘到这里。

常见问题

类似工具组合

做你这行的人, 还会一起用这些。

Made by Toolora · 100% client-side · Updated 2026-05-29