JSONPath 取值

用路径表达式从 JSON 中提取字段值。

1

什么是JSONPath 取值?

JSONPath 是一种类似 XPath 的查询语言,用于在 JSON 文档中定位和提取数据。给定一段复杂的、嵌套很深的 JSON,通过一个简洁的路径表达式(如 $.store.book[0].title)就能直接取出你需要的字段值,而不用手写代码去逐层遍历对象和数组。 JSONPath 取值工具的作用,就是让你输入一段 JSON 和一个 JSONPath 表达式,在浏览器本地实时计算出匹配结果,常用于调试接口返回值、编写自动化测试断言、或者在文档中说明如何从响应体里取某个字段。

为什么使用JSONPath 取值?

典型场景包括:调试 REST API 返回的 JSON,快速验证某个深层字段的路径是否写对;在写自动化测试(如 Postman、Jest)时,需要先在本地把 JSONPath 表达式跑通再放进代码;处理日志或配置文件里的 JSON,批量提取某个字段用于统计。相比直接读 JSON 再用编程语言写代码提取,JSONPath 取值工具的好处是零依赖、所见即所得——改一下表达式立刻看到新结果,不需要重新运行程序。 它和 jq(命令行 JSON 处理工具)功能类似,但 jq 语法更接近函数式管道,学习成本更高;JSONPath 语法更贴近人们熟悉的对象访问路径,上手更快,但复杂过滤和转换能力不如 jq。

使用示例

提取数组中所有书名

输入 JSON:{"store":{"book":[{"title":"三体","price":59},{"title":"球状闪电","price":45}]}},表达式 $.store.book[*].title,输出:["三体","球状闪电"]。

按条件过滤

同上数据,表达式 $.store.book[?(@.price<50)].title,输出:["球状闪电"],即价格低于 50 的书名。

取第一个元素

表达式 $.store.book[0].title 直接取数组第一项的 title 字段,输出「三体」;如果索引越界(比如数组只有 2 项却写 [5]),结果为空,不会报错崩溃。

使用提示

调试时建议从粗到细:先用 $.* 或 $..字段名 看看能不能找到目标字段所在层级,确认路径大致方向后再精确到具体索引,比一次性写复杂表达式更容易定位问题。

常见问题

支持哪些路径语法?
支持点号访问对象字段(a.b)与方括号访问数组下标(a.b[0]),可组合使用,如 a.b[0].c,也可以省略开头的 $ 前缀。
路径写错会怎样?
若某一级字段不存在、值为空或类型不是对象/数组导致无法继续取值,会在结果处给出中文错误提示,不会抛出未捕获异常。
数据会上传吗?
不会。JSON 解析与路径取值全部在浏览器本地完成。
JSONPath 和 jq 有什么区别?
两者都能从 JSON 提取数据,JSONPath 语法更像文件路径/对象访问($.a.b[0]),适合简单取值;jq 是完整的过滤器语言,支持管道、函数、复杂变换,适合批处理但语法更陡峭。本工具实现的是常见的 JSONPath 语法子集,覆盖绝大多数取值场景。
支持哪些 JSONPath 语法?
支持常见的点号/中括号取值($.a.b、$['a']['b'])、数组索引与切片、通配符 *、递归下降 ..、以及简单的过滤表达式 [?(@.field==value)],能满足日常调试需求,但不保证覆盖所有小众实现的高级语法差异。
数据会上传到服务器吗?
不会,JSON 解析和路径匹配都在浏览器本地 JavaScript 中完成,输入内容不会发送到任何服务器,适合处理包含敏感字段的接口返回数据。
表达式匹配不到结果怎么办?
先检查 JSON 本身是否合法(可以先用 JSON 校验工具跑一遍),再检查路径是否从 $ 开始、层级和实际结构是否一致,常见错误是漏写数组下标或者把对象字段名拼错。

相关工具

← 返回工具箱· 数据均在浏览器本地处理,不上传服务器。