JSONPath 实时求值 · 递归下降 / 切片 / 联合 / 过滤器(&& || =~)· 规范化路径 —— 单文件 / 零依赖 / 离线可用
$.store.book[*].author
$..author
$.store.*
$.store..price
$..book[2]
$..book[-1]
$..book[:2]
$..book[?(@.isbn)]
$..book[?(@.price < 10)]
$..book[?(@.category == 'fiction' && @.price < 10)]
$..book[?(@.author =~ /tolkien/i)]
$..*
| 语法 | 含义 |
| $ | 根对象 |
| .name / ['name'] | 子属性(点或方括号记法) |
| ..name | 递归下降:任意深度的属性 name |
| * / [*] | 通配:全部子成员 / 全部数组元素 |
| ..* | 递归通配:全部成员(任意深度) |
| [n] / [-n] | 数组下标(支持负数从尾部计) |
| [0,2] / ['a','b'] | 联合:多下标 / 多属性名 |
| [start:end:step] | 切片(Python 语义,支持负数与负 step) |
| [?(@.x)] | 过滤器:存在属性 x 的元素 |
| [?(@.x op v)] | 比较:== != < <= > >= ,v 为字符串/数字/布尔/null |
| [?(@.x =~ /re/i)] | 正则匹配(字符串属性) |
| [?(A && B || C)] | 逻辑组合(&& 优先于 ||,支持括号) |
| [?(@ > 3)] | 标量数组元素直接比较 |
输出为规范化路径($['store']['book'][0])+ 对应值;语义对齐 Goessner 原始提案。