第 9 课
JSONPath 查询
用路径表达式从嵌套文档中提取字段。
JSON 文档很大时,你往往只需要 某一个字段,而不想逐层手动定位。JSONPath 是一种查询语言(类似 XML 的 XPath),用于在 JSON 树中选择节点。
示例文档
{
"store": {
"books": [
{ "title": "JSON 101", "price": 12.5 },
{ "title": "API Design", "price": 28 }
]
}
}
常见表达式
| 表达式 | 含义 |
|---|---|
$ | 文档根 |
$.store.books | books 数组 |
$.store.books[0].title | 第一本书标题 |
$.store.books[*].price | 所有价格 |
$..price | 根下任意层的 price |
可将 $ 理解为起点,. 为子属性,[n] 为下标,[*] 为每个元素,.. 为递归向下。
使用场景
- 在测试或脚本中从嵌套 API 响应取 user id
- 在结构不一的日志里筛选
level == "error" - 在集成文档中标注字段路径
与手写代码对比
JavaScript 中可写 data.store.books[0].title。JSONPath 更适合:
- API 版本间层级不一致
- 多文件配置中用同一路径查询
- 工具提供路径输入框做临时检查
局限
各实现对过滤器、切片等扩展略有差异。生产环境应固定库版本,并为关键路径写测试。JSONPath 只读结构——不能修复无效 JSON;请先解析与校验。