JSON Path 详解:如何像 XPath 一样精准提取 JSON 节点
2026-02-26
接口返回深层嵌套 JSON,你只想拿 orders[0].items[2].sku。手写 optional chaining 可以,但配置化提取、测试断言、日志规则更适合 JSONPath 表达式。
基础语法
$ 表示根;.name 取属性;[0] 取数组下标;[*] 所有元素;..key 递归搜索 key。
RFC 9535 标准化了 JSONPath;各库实现细节略有差异,以文档为准。
// 数据: { "store": { "book": [ { "title": "A" }, { "title": "B" } ] } }
// $.store.book[*].title → ["A", "B"]过滤器表达式
[?(@.price < 10)] 筛选数组元素;@ 指当前节点。
适合配置平台「按条件抽字段」,避免写死 index。
常见工具
JavaScript:jsonpath-plus、JSONPath-Plus;Python:jsonpath-ng。
jq 使用类似路径语法:.store.book[].title,在命令行极常用。
和 XPath 的类比
XPath 面向 XML 树;JSONPath 面向 JSON 的值结构——没有属性与文本节点之分,语法更简单。
JSON 键有序(对象插入序),但 JSONPath 通常按名称匹配,不保证顺序语义。
实践建议
生产环境优先固定路径 + schema 校验;JSONPath 适合运维规则、测试、可配置抽取。
复杂查询仍可能在服务端 SQL/NoSQL 完成,别把 JSONPath 当通用查询语言。