JSONPath 语法速查:在线查询表达式示例与常见坑

JSON 格式化工具 · 2026-09-13

JSONPath 是提取 JSON 字段的查询语言,接口调试、日志分析、测试断言都离不开。下面是常用操作符速查表与可直接套用的示例。

操作符速查表

语法含义示例结果
$根节点$.name根对象的 name
.子节点$.store.bookbook 数组
..递归下降$..price所有层级的 price
[*]数组全部$.store.book[*]所有书
[0]数组下标$.book[0]第一本书
[0:2]切片$.book[0:2]前两本
?()过滤$.book[?(@.price<10)]价格小于 10 的书
@当前节点配合 ?()过滤表达式内使用
['a','b']多字段$['name','age']两个字段

完整示例

{
  "store": {
    "book": [
      {"title": "A", "price": 8.95, "tags": ["tech"]},
      {"title": "B", "price": 12.99, "tags": ["novel"]}
    ],
    "bicycle": {"color": "red", "price": 399}
  }
}
$.store.book[*].title        → ["A", "B"]
$..price                     → [8.95, 12.99, 399]
$.store.book[?(@.price > 10)].title → ["B"]
$.store.bicycle.color        → "red"

三个常见坑

  1. 根节点必须写 $:很多实现里省略 $. 直接写字段会查不到
  2. 过滤表达式语法因实现而异:部分库用 [?(@.x==1)],部分用 [?(@.x == 1)],空格敏感
  3. 递归下降 .. 性能:大 JSON 里滥用 $..* 会明显变慢,尽量写全路径
💡 在 JSON 格式化工具 的「树形」视图里,可以直接试跑 JSONPath 表达式并高亮命中节点,边写边验证。