JSONPath 查询
JSONPath 查询工具,粘贴 JSON,用 JSONPath 表达式实时提取、过滤节点,例如 $..price 递归查找所有价格、$..book[?(@.price < 10)] 条件筛选。右侧同时给出每个命中节点的完整路径与值,输入停顿 400ms 自动执行;内置语法速查卡,点击示例直接填入,查询结果可复制,或发送到格式化工具继续处理。表达式计算在浏览器本地的 Web Worker 中完成。
怎么使用
- 1
粘贴 JSON 数据
把接口响应或配置 JSON 粘贴到左侧输入框,也可以点击「填入示例」快速体验;JSON 非法时会在编辑器行内高亮出错位置。
- 2
输入 JSONPath 表达式
表达式必须以 $(根节点)开头:$.store.book[0].title 取单个字段,[*] 遍历,.. 递归下降,[?(...)] 写过滤条件;输入停顿 400ms 后自动查询。
- 3
查看命中路径与结果
命中列表展示每个节点的 JSON 路径、类型与值预览(点击路径可复制),下方是按 JSON 美化输出的完整结果,并显示命中条数与耗时。
- 4
提取结果继续处理
复制结果文本,或点「提取到格式化」把结果作为新数据发送到 JSON 格式化工作台,省去复制粘贴。
功能特点
实时查询预览
输入表达式停顿 400ms 即在 Web Worker 中执行,单调序号自动丢弃过期结果,快速连打也不会出现旧结果覆盖新结果。
完整路径标注
每个命中值都带有规范化后的 JSON 路径(如 $.store.book[0].title),数组下标与对象键自动消歧,点击即可复制。
表达式预检 + 中文报错
执行前先做语法结构预检(根节点、括号配平、引号闭合),畸形表达式立即给出中文错误提示,而不是静默返回零结果。
内置语法速查卡
基础取值、通配与递归、条件过滤、切片四组示例全部可对示例数据直接运行,点击表达式立即填入执行,现查现学。
与 jq 同页切换
需要管道、分组、排序、重塑结构等更强能力时,可以切到内置的 jq 1.8 引擎,JSON 数据与布局保持不变。
Web Worker 执行
查询在独立 Worker 线程中运行,主界面保持可交互,大文件也能边输入边看结果。
常见错误与排查
- ! JSONPath 必须以 $ 开头,根节点之后只能接 . 或 [,例如 $.store.book 合法,store.book 不合法。
- ! . 只下钻一层,.. 会递归所有层级:找「全文档里所有 price」用 $..price,找「book 数组里的价格」用 $.store.book[*].price。
- ! 过滤表达式写在方括号里,当前节点用 @ 表示:$..book[?(@.category=="fiction")];注意等于用 ==,字符串值用双引号。
- ! 切片是左闭右开:book[0:2] 取第 1、2 个元素(下标 0 和 1);负数从末尾计数,book[-2:] 取最后两个。
- ! 结果默认最多保留前 500 条命中以保证大文件流畅,超出时页面会提示「已截断」;请缩小表达式范围精确定位。
常见问题
JSONPath 和 jq 有什么区别?该用哪个?
JSONPath 是纯「路径定位」语言,语法接近 XPath,擅长按路径 / 条件从 JSON 中选取节点,写法如 $..book[?(@.price<10)],上手最简单。jq 是完整的数据处理语言,支持管道、map/select、group_by、排序与对象重塑,能力更强但语法更多。本站两个引擎在同一页面可以切换,建议先用 JSONPath 快速取值,需要加工数据时再切 jq。
为什么表达式没有报错却查不到结果?
表达式合法但数据中没有匹配节点时,状态栏会明确提示「无匹配」而不是报错。常见原因:路径层级与实际 JSON 不一致(可用 $..字段名 递归搜索定位真实层级)、过滤条件里的字符串与实际大小写 / 空格不一致、比较字段在部分元素上缺失。可点击速查卡里的示例对照排查。
$..book[?(@.price < 10)] 这类条件语法怎么写?
方括号中以 ?( ) 包裹过滤表达式,@ 代表当前遍历到的元素,@.price 即该元素的 price 字段。支持 <、<=、>、>=、==、!= 比较与 &&、|| 逻辑组合,例如 $..book[?(@.category=="fiction" && @.price < 10)];字段存在性可用 $..book[?(@.isbn)] 判断。
查询时我的 JSON 数据会上传吗?
不会。查询引擎运行在浏览器本地的 Web Worker 中,站点没有后端服务,数据不会离开你的设备。
支持多大的 JSON?结果很多会卡吗?
解析与查询在 Worker 线程执行,主线程保持可交互;命中结果最多保留前 500 条(超出会提示已截断),避免超大结果集拖慢渲染。对超大文件建议先用更精确的路径(少用全文档递归 ..)缩小命中范围。