JSONPath查询使用教程:一条表达式精准提取JSON数据

JSONPath查询使用教程:一条表达式精准提取JSON数据

📁 开发👁️ 151 阅读⏱️ 6 分钟阅读🕒 2026/9/14

教你用 JSONPath 表达式从复杂 JSON 中快速取值:属性访问、数组索引、通配符、条件过滤、切片与树形定位,新手也能马上上手。

工具简介

JSONPath 查询是工具派提供的在线 JSON 数据提取工具。JSONPath 之于 JSON,就像 XPath 之于 XML——用一条简洁的「路径表达式」,就能从层级复杂、动辄上百行的 JSON 里精准定位并取出你想要的数据,而无需写任何代码。

工具的用法很直观:左侧粘贴 JSON、输入表达式,右侧实时显示查询结果。它还内置了 JSON 树形结构(点击任意节点即可自动生成对应路径)、常用语法 速查面板,以及多组开箱即用的 示例数据。无论是调试接口返回值,还是系统学习 JSONPath 语法,都非常顺手。整个解析与查询过程都在浏览器本地完成,你的数据不会上传到服务器。

支持的语法包括:根对象 $、属性访问 $.name、数组索引 $[0]、通配符 $[*]、递归下降 $..、条件过滤 $[?(@.age>18)]、数组切片 $[0:3]、多选 $[name,price] 等,足以应对绝大多数 JSON 取值需求。

适用场景

  • 调试 API 返回值:接口返回一大坨 JSON,只想看其中某几个字段,一条表达式立刻搞定。
  • 数据清洗与提取:从日志、配置文件、爬虫结果里批量挑出符合条件的元素,例如「所有价格低于 10 的商品」。
  • 学习 JSONPath 语法:配合示例数据和语法面板,边点边看结果,快速上手这套通用查询语言。
  • 定位嵌套字段路径:面对陌生的 JSON 结构,点一下树形节点就能得到它的完整访问路径。

使用步骤

第 1 步:准备 JSON 数据

在左侧「JSON 数据」文本框中粘贴你的 JSON。如果手头没有现成数据,可以点击上方的「示例数据」按钮,工具内置了三组演示数据:

  • 示例数据:经典的「书店」结构(store.book 数组 + bicycle 对象);
  • 用户信息:一组用户数组(含 idnameageactiveroles 字段);
  • 嵌套结构:公司 → 部门 → 员工的多层嵌套结构。

点击任意一个示例按钮,会自动填入对应的 JSON 和一条示范表达式,方便直接体验。

小提示:文本框右上有「格式化」「压缩」「清空」三个小按钮。粘贴进来的单行 JSON 可以先点「格式化」,美化成带缩进的结构,阅读起来更轻松。

工具整体界面:顶部三个示例数据按钮,左侧为 JSON 数据输入框(含格式化/压缩/清空按钮),下方是 JSONPath

第 2 步:编写 JSONPath 表达式

在「JSONPath 表达式」输入框里写下查询路径。所有表达式都以 $(代表根对象)开头,例如:

  • $.store.book[0].title —— 取第一本书的标题;
  • $.store.book[*].author —— 取所有书的作者;
  • $.users[?(@.age>25)].name —— 取年龄大于 25 岁的用户姓名。

表达式框上方还提供了 4 个快捷查询按钮(如 $.store.book[*].author$.store.book[?(@.price<10)] 等),点一下即可填入常用写法,非常适合参考格式。

第 3 步:执行查询并查看结果

点击蓝色的「查询」按钮执行;实际上你每次修改 JSON 或表达式后,工具也会自动重新查询,结果实时刷新。

右侧「查询结果」区域会列出所有匹配项,标题旁标注了结果条数,例如「查询结果 (4 条)」。每条结果用单独的卡片展示:对象和数组会自动格式化缩进,字符串、数字、布尔等基本值则直接显示。没有匹配项时显示「暂无结果」;如果 JSON 本身写错了,输入框下方会出现红色的「JSON 错误:……」提示,帮你快速定位格式问题。

输入表达式 $.store.book * .author 并点击查询后,右侧查询结果区显示 4 条匹配结果,每条以编号卡

第 4 步:用树形结构定位路径(强烈推荐)

不熟悉 JSON 结构、不知道字段藏在哪一层?看左下角的「JSON 树形结构」。它把整份 JSON 渲染成一棵可折叠的树:

  • 点击节点前的 ▼ / ▶ 可以展开或折叠;
  • 直接用鼠标点击任意字段名(key),工具会自动把该节点的完整 JSONPath 填进表达式框——这是生成路径最省事的方式,再也不用手数层级、不用担心写错。

暂时不需要树可以点「折叠」收起,需要时再点「展开」。

左下角 JSON 树形结构面板,展示可折叠的 JSON 树,鼠标正点击某个字段名,表达式框自动填入该节点的完整路径。

第 5 步:复制结果

确认结果无误后,点击结果区右上角的「复制结果」,会把全部匹配项以 JSON 数组的形式复制到剪贴板(复制成功会短暂显示「已复制」),方便直接粘贴到代码或文档中使用。

参数与选项说明

下面是工具支持的 JSONPath 语法速查(示例均以内置「书店」数据为准):

语法 说明 示例
$ 根对象,所有表达式的起点 $
$.属性名 访问对象的某个属性 $.store.bicycle
$[索引] 按位置取数组元素(从 0 开始) $.store.book[0]
$[*] 取数组所有元素,或对象的所有值 $.store.book[*]
$.. 递归下降,展开整棵树的所有节点 $..employees[*].name
$[?(@.字段 操作符 值)] 按条件过滤数组元素 $.store.book[?(@.price<10)]
$[起始:结束] 数组切片(含起始、不含结束) $.store.book[0:2]
$[名1,名2] / $[0,2] 多选:一次取多个属性或多个索引 $.store.book[0,2]
$['属性名'] 用方括号加引号访问属性(属性名含特殊字符时用) $['store']['bicycle']

条件过滤支持以下操作符(@ 代表当前被遍历的数组元素):

操作符 含义 示例
== 等于(可比较数字、布尔、带引号的字符串) ?(@.category=='fiction')?(@.active==true)
!= 不等于 ?(@.id!=2)
> / < 大于 / 小于(数字比较) ?(@.age>25)
~= 字符串包含(左侧是字符串且包含右侧内容) ?(@.name~=张)
?(@.字段) 存在性判断:该字段存在即匹配 ?(@.isbn)

实用技巧

  1. 优先点击树形节点生成路径:这是零出错的方式,尤其适合层级很深的 JSON。
  2. 善用快捷入口:表达式框上方的快捷查询按钮,以及右下角「常用语法」面板里的每一条语法,都可以点击直接填入表达式框,照着改即可。
  3. 先格式化再查询:结构清晰的 JSON 更便于对照结果。
  4. 过滤值要区分类型:字符串必须带引号(?(@.category=='fiction')),数字和布尔值不带引号(?(@.price<10)?(@.active==true))。
  5. 批量映射字段:用 $.数组[*].字段名 可以一次性取出数组里每个元素的某个字段,例如 $.users[*].name
  6. 属性名含特殊字符:当字段名里有点号、空格或中文等,改用方括号加引号的写法 $['属性名']

常见问题

Q1:为什么 $..price 返回了一大堆结果,而不只是价格?
$.. 是递归下降语法,它会把整棵树的所有节点都展开返回,.. 后面紧跟的属性名在本工具中不参与过滤。如果只想取特定位置的价格,建议使用完整点路径,例如 $.store.book[*].price;也可以用组合写法 $..book[*].price 取出树中所有名为 price 的字段值。

Q2:>=<= 为什么查不出结果?
这是工具当前的一个已知限制:>=<= 会被解析器误判,导致恒不匹配、返回空。请改用 >< 变通,例如把 ?(@.age>=28) 换成 ?(@.age>27),效果相同。

Q3:表达式看着没错,却显示「暂无结果」?
请逐项排查:① JSON 是否合法(输入框下方有无红色「JSON 错误」提示);② 属性名大小写是否完全一致(区分大小写);③ 数组索引是否越界;④ 过滤条件里的字符串是否加了引号。

Q4:支持用负数索引(如 $[-1])取最后一个元素吗?
不支持。索引只能是非负整数,切片也只接受非负数字。需要定位末尾元素时,可以结合数组长度使用切片,或直接在「JSON 树形结构」里点击该节点获取路径。

Q5:我粘贴的 JSON 会上传到服务器吗?
不会。解析与查询全部在你的浏览器本地完成,数据不会离开浏览器,可放心用于敏感数据。