logo
GeekFormat

JSONPath 查询

在线JSONPath查询工具,支持$.property属性访问、[n]数组索引、[*]通配符、[start:end]数组切片、?()条件过滤表达式,输入JSON和路径后实时查询(400ms防抖),支持JSON格式化视图和对齐表格视图双模式切换,内置8个常用路径示例,JSON语法错误可自动修复,支持上传JSON文件、下载查询结果、键盘快捷键操作、本地历史记录自动保存,左右面板宽度可调、字体大小切换,所有解析和查询纯浏览器本地完成,不上传任何数据,适合QA测试接口断言、后端调试日志字段提取、前端对接API验证返回结构。

相关推荐

适用场景

  • QA测试工程师编写接口自动化测试前,交互式验证JSONPath断言表达式是否能正确提取目标字段
  • 后端开发调试复杂嵌套接口返回时,快速定位深层字段路径,不用逐层手动展开
  • 前端对接第三方API,快速验证返回JSON结构,确认字段路径后再写代码取值
  • 运维/后端排查ELK、Jaeger日志中的JSON字段时,快速提取特定字段值分析问题
  • 数据分析前对JSON接口返回数据做条件筛选,先过滤出符合条件的记录再做后续处理
  • 在Postman、JMeter、RestAssured等工具中配置JSON提取器前,本地调试好表达式避免反复运行接口
  • 处理批量JSON数据,快速提取需要的字段子集生成新的数据结构
  • 学习JSONPath语法时,通过实时反馈快速验证各种语法写法,加深理解
  • 爬虫开发调试时验证JSON接口返回的数据提取路径是否正确
  • API文档编写时,用工具验证示例JSON的路径后再写入文档示例
  • 移动端开发调试接口,手机上临时打开工具快速验证字段提取,不用找电脑
  • Code Review时检查同学写的JSONPath表达式是否正确能取到预期值

功能特点

  • 全实用语法支持:$.property属性访问、[n]数组索引(含[-1]取最后一项)、[*]通配符、[start:end]数组切片、?()条件过滤(支持==/!=/>/</>=/<=比较)
  • 实时查询:输入JSON或路径后400ms防抖自动执行查询,无需点击按钮,结果即时更新
  • JSON/表格双视图:查询结果支持美化JSON视图和对齐表格视图切换,对象数组结果自动按列对齐展示,方便快速浏览
  • 内置常用示例:下拉菜单提供8个常用路径示例(根对象、所有书籍、首项/末项、切片、价格提取、条件过滤等),点击即填
  • 语法帮助弹窗:一键打开帮助面板查看6种核心语法速查和键盘快捷键说明,Mac/Windows自动适配快捷键显示
  • 智能错误修复:JSON格式错误时自动检测可修复问题,一键修复常见JSON语法错误(缺逗号、引号、尾部逗号等)
  • 一键格式化:内置JSON格式化功能,Shift+Cmd/Ctrl+F快速美化输入JSON,排版整齐方便阅读层级
  • 文件上传下载:支持上传.json/.txt文件直接读取内容,查询结果一键下载为query-result.json文件
  • 键盘快捷键:Shift+Cmd/Ctrl组合键快捷操作(Enter查询、F格式化、O上传、D下载、K清空),提升操作效率
  • 本地历史记录:自动保存最近200条输入到浏览器localStorage,下次打开自动恢复上次内容,无需重复粘贴
  • 面板宽度可调:PC端可拖动中间分隔条调整左右面板宽度比例,根据JSON结构灵活分配空间
  • 字体大小切换:支持14px/16px两种代码字体大小切换,长时间调试保护眼睛
  • 等宽代码编辑器:基于CodeMirror实现语法高亮、行号显示、括号匹配,编辑体验专业流畅
  • 纯本地浏览器处理:所有JSON解析、路径匹配、条件过滤都在本地JavaScript完成,数据不上传服务器,敏感接口数据和日志放心使用

使用方法

  1. 点击工具栏「示例」按钮加载示例JSON快速体验,或粘贴/上传你自己的JSON数据到左侧编辑器
  2. 在顶部查询框输入JSONPath表达式(可以点击右侧「示例」按钮选择常用路径),以$开头或直接写属性路径均可
  3. 输入后400ms自动查询,右侧立即显示结果;可切换「JSON视图」看格式化结构或「表格视图」看对齐列表
  4. 验证表达式正确后点击复制或下载按钮保存结果,也可复制JSONPath表达式到Postman/JMeter等工具使用

常见问题

支持哪些JSONPath语法?

支持以下实用语法:①$.property或['property']访问对象属性;②[n]按索引访问数组元素(n从0开始,[-1]表示最后一项);③[*]或.*通配符,匹配数组所有元素或对象所有属性值;④[start:end]数组切片,取指定范围元素;⑤?(@.field op value)条件过滤,支持==/!=/>/</>=/<=六种比较运算符,支持字符串和数值比较。

怎么提取数组中满足条件的元素?

使用?()条件过滤表达式。例如$.store.book[?(@.price < 80)]筛选价格小于80的书籍,$.store.book[?(@.category == '编程')]筛选分类为编程的书籍。注意属性名前要加@.表示当前元素,字符串值用单引号或双引号包裹。

怎么取数组第一个/最后一个/前N个元素?

[0]取第一个元素,[-1]取最后一个元素,[0:2]取索引0到1的前两个元素(切片左闭右开,不包含end索引),例如$.store.book[0:3]取前三本书。

表格视图和JSON视图有什么区别?

JSON视图显示标准格式化缩进的JSON结果,保留完整嵌套结构,适合复制和查看完整数据;表格视图把对象数组结果自动按属性列对齐展示,类似Excel表格,浏览多条记录时更直观,可以快速扫过所有行的字段值对比差异。简单类型结果也会按键值对对齐显示。

提示JSON解析错误怎么办?

如果输入的JSON有语法错误(缺少逗号、引号不配对、多余尾逗号、单引号等),错误区域会显示红色提示,并出现「修复错误」按钮,点击即可自动尝试修复常见JSON问题。也可以先用Shift+Cmd/Ctrl+F格式化,如果格式化报错说明JSON确实有问题,修复后再查询。

查询后什么结果都不显示?

请检查:①JSON是否合法有效(可点格式化按钮验证);②JSONPath路径拼写是否正确,属性名大小写敏感;③路径是否存在(比如访问不存在的属性会报错);④过滤表达式语法是否正确,括号和引号是否配对。

内置示例怎么使用?

点击查询框右侧的「示例」按钮(向下箭头),下拉菜单会列出8个常用路径示例,点击任何一个示例就会自动填充路径表达式,同时建议先点击「示例」按钮加载示例JSON数据(书店数据),配合示例路径体验效果。

快捷键有哪些?

统一使用Shift+Cmd(Mac)/Shift+Ctrl(Windows)组合键:Shift+Enter执行查询,Shift+F格式化JSON,Shift+O上传文件,Shift+D下载结果,Shift+K清空所有内容。帮助按钮(?图标)里可以随时查看完整快捷键列表。

条件过滤支持哪些比较运算符?

支持六种比较运算符:==(等于)、!=(不等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)。数值比较按数字大小比较,字符串比较按字典序比较,字符串值需要用单引号或双引号包裹。

路径需要以$开头吗?

不强制要求。工具会自动补全开头的$.,直接输入store.book[0]也可以正常工作,系统会自动规范化为$.store.book[0]执行。不过标准JSONPath规范建议以$开头表示根节点。

为什么我之前输入的内容下次打开还在?

工具会自动把最近输入的JSON保存到浏览器本地localStorage(最多200条历史记录),下次打开页面自动恢复上次的内容,不需要每次都重新粘贴接口返回结果。清空按钮(Shift+K)会清除当前内容。

可以上传JSON文件吗?

可以。点击工具栏「上传」按钮或按Shift+O,选择本地.json或.txt文件即可自动读取文件内容填入输入框。查询结果也可以点击「下载」按钮或Shift+D保存为query-result.json文件到本地。

适合用来做Postman/JMeter接口断言吗?

非常适合。接口调试时,把接口返回的JSON粘贴到工具中,交互式调整JSONPath表达式直到查询结果符合预期,然后把验证通过的表达式复制到Postman测试脚本、JMeter JSON Extractor、自动化测试框架中使用,可以大幅减少在线调试时间。

我输入的接口数据会上传到服务器吗?

不会。所有JSON解析、JSONPath路径匹配、条件过滤、表格格式化都在你浏览器本地通过JavaScript完成,输入的JSON内容不会通过网络发送到任何服务器,关闭页面后只有本地localStorage保留(可清空),敏感业务数据和未上线接口数据可以放心使用。

通配符[*]可以用在对象上吗?

可以。[*]用在数组上返回数组所有元素;用在对象上(比如$.store.*)返回对象所有属性值组成的数组。和属性组合使用时比如$.store.book[*].author可以提取数组中所有元素的author属性,形成一个作者列表。

关于JSONPath与数据提取

JSONPath是一种用于从JSON文档中提取指定数据的路径表达式语言,类似于XPath对于XML的作用。在API开发和测试中,接口返回的JSON往往层次深、嵌套多,手动展开逐层找字段效率低且容易出错,使用JSONPath可以通过一行表达式精准定位并提取出目标数据,是接口调试、自动化测试、数据提取场景中开发者的必备工具。

JSONPath的核心设计思想是用路径符号描述数据位置:$表示根节点(整个JSON对象),点号.或方括号[]访问子属性,[n]按下标访问数组元素,[*]匹配所有元素,[start:end]截取数组片段,?()按条件过滤数组元素。这套语法简洁但表达力强,可以覆盖绝大多数数据提取需求。

条件过滤是JSONPath最实用的功能之一,用?(@.字段 运算符 值)形式表达筛选逻辑,比如?(@.price < 100)筛选价格字段小于100的数组项,?(@.status == 'active')筛选状态为active的记录。@代表当前正在遍历的数组元素,@.field访问当前元素的某个字段,这让条件筛选非常直观。

为什么需要专门的JSONPath工具而不是直接在代码里调试?因为写接口自动化断言或数据提取代码时,如果JSONPath写错了,你可能需要反复运行接口、打印日志、修改代码再重跑,效率很低。在线工具里交互式调试可以秒级看到结果,调整表达式即时反馈,验证正确后再复制到代码里,能节省大量调试时间。

表格视图是本工具区别于很多同类工具的实用功能:当查询结果是对象数组时(这是最常见的接口返回列表形式),自动把所有对象的键提取为表头,每行数据对齐展示,类似Excel表格的浏览体验,比在缩进JSON里逐行找字段值要直观得多,快速扫一眼就能对比多条记录的字段差异。

自动修复JSON错误也是针对实际开发场景设计的功能:从日志、文档、聊天窗口复制的JSON经常有各种小问题——用了单引号、缺少逗号、最后一项多了尾逗号、属性名没加引号等,手动修复很麻烦,工具的自动修复功能可以一键处理大部分常见JSON格式问题,不用再去逐字符找错误。

本地历史记录是针对高频使用优化的小细节:开发者经常需要反复调试同一个接口,每次打开工具重新粘贴JSON很麻烦,工具自动把最近输入保存到浏览器本地存储,下次打开自动恢复上次内容,200条历史足够日常工作使用。所有数据只存在你自己的浏览器里,不会上传。

需要说明本工具支持的是实用核心JSONPath语法子集(属性访问、索引、通配符、切片、条件过滤),覆盖90%以上日常开发场景。对于递归下降(..)、脚本表达式、多条件组合等高级语法目前暂不支持,如果你的场景需要这些高级特性,可能需要使用更完整的实现库。对于绝大多数接口调试和字段提取需求,当前语法集完全够用且更轻量快速。

术语表

JSONPath
一种用于从JSON数据中提取指定部分的路径表达式语言,类似于XPath之于XML,通过路径符号描述目标数据位置。
根节点 ($)
JSONPath表达式的起点,表示整个JSON文档的根对象或根数组,路径可以从$开始,工具也支持省略$直接写路径。
当前节点 (@)
在过滤表达式中使用,表示当前正在遍历的数组元素,@.field用于访问当前元素的指定字段。
属性访问 (.property 或 ['property'])
访问对象指定属性的两种写法:点号写法($.store.book)简洁,方括号引号写法($['store']['book'])适合属性名含特殊字符的情况。
数组索引 ([n])
按位置访问数组元素,索引从0开始,[0]表示第一个元素,[-1]表示最后一个元素。
通配符 ([*] 或 .*)
匹配当前位置所有子项:用在数组上返回所有元素,用在对象上返回所有属性值。
数组切片 ([start:end])
截取数组的一段元素,左闭右开区间(包含start不包含end),省略start表示从头开始,省略end表示到末尾。
条件过滤 (?())
按条件筛选数组元素,内部写比较表达式,支持==/!=/>/</>=/<=六种比较,字符串值需用引号包裹。
Postman断言
Postman接口测试工具中的Tests脚本,使用JSONPath提取接口返回字段后做断言验证,是接口自动化测试的常用方式。
防抖 (Debounce)
输入停止后延迟执行查询的优化技术(本工具400ms),避免每按一个键就重新查询,提升输入流畅度。
CodeMirror
浏览器端代码编辑器组件,提供语法高亮、行号、括号匹配等专业代码编辑功能,本工具使用它作为JSON编辑区。
本地处理
所有JSON解析和查询逻辑在用户浏览器内通过JavaScript执行,数据不上传到服务器,既快又安全,适合处理敏感数据。

JSONPath 核心语法速查表

本工具支持的所有语法:

语法说明示例结果(示例书店JSON)
$根对象,返回整个JSON完整store对象
$.store.book[0]访问book数组第一个元素(索引从0开始)JavaScript高级程序设计 这本书
$.store.book[-1]访问数组最后一个元素用户体验要素 这本书
$.store.book[*]通配符,返回数组所有元素全部3本书组成的数组
$.store.book[0:2]数组切片,取索引0到1(左闭右开)前2本书
$.store.book[*].author提取数组所有元素的author字段["张三","李四","王五"]
$.store.book[?(@.price < 80)]条件过滤,筛选price<80的书籍Python和UX两本书(价格79和59)
$.store.bicycle.color点号访问嵌套对象属性"红色"

条件过滤比较运算符

?()过滤表达式支持的运算符:

运算符含义示例
==等于(支持数值和字符串)?(@.category == '编程')
!=不等于?(@.status != 'deleted')
>大于(数值比较)?(@.price > 100)
<小于?(@.price < 50)
>=大于等于?(@.age >= 18)
<=小于等于?(@.count <= 100)

键盘快捷键列表

所有快捷键使用 Shift + Cmd(Mac)/Ctrl(Windows) 组合键:

操作Mac快捷键Windows快捷键
执行查询⇧ + ⌘ + EnterShift + Ctrl + Enter
格式化JSON⇧ + ⌘ + FShift + Ctrl + F
上传文件⇧ + ⌘ + OShift + Ctrl + O
下载结果⇧ + ⌘ + DShift + Ctrl + D
清空内容⇧ + ⌘ + KShift + Ctrl + K

Privacy & Security

本JSONPath查询工具所有JSON解析、路径匹配、条件过滤、表格格式化工作完全在你的浏览器本地通过JavaScript完成,你输入的JSON数据、查询的路径和返回结果都不会被上传到任何服务器,也不会被记录、缓存或存储到云端。输入历史仅保存在你浏览器本地localStorage(最多200条),你可以通过清空按钮或清除浏览器数据删除。包含敏感业务字段、未上线接口数据、生产环境日志都可以放心使用,不存在任何数据泄露风险。

Authoritative References

Troubleshooting

提示「路径不存在或值为null/undefined」

说明JSONPath路径在当前JSON中找不到对应值。检查:①属性名拼写和大小写是否正确(JSON是大小写敏感的);②嵌套层级是否正确,中间层是否存在;③数组索引是否越界;④先点击格式化确认JSON结构和你预期一致。

提示「尝试在非数组对象上使用索引/切片/过滤」

说明你在非数组的值上用了[]索引、[start:end]切片或?()过滤,这些操作只能用于数组。检查路径对应位置实际是数组还是单个对象,可以先用$通配符或根路径确认实际结构。

条件过滤没有返回预期结果

检查:①@后面是否有点号(必须写@.field,不能漏了点);②字符串值是否用单/双引号包裹(?(@.name == zhangsan)不对,要写?(@.name == 'zhangsan'));③数值不要加引号,否则会按字符串比较;④比较运算符两侧不要有多余空格。

提示「括号不匹配」

说明JSONPath表达式的方括号[]或过滤括号()没有正确配对,检查是否漏写了闭合]或),特别是多层方括号嵌套时注意每个[都要有对应的]。