snack - JsonPath 标准兼容与选择
snack-jsonpath 同时兼容 jayway.jsonpath
和 IETF JSONPath (RFC 9535) 标准 (两者不兼容)
jayway.jsonpath
算是事实标准(2011 年首发,大量的项目有用)IETF JSONPath (RFC 9535)
为协议标准(2024 年通过)
snack-jsonpath 默认采用 IETF JSONPath (RFC 9535)
标准策略。jayway.jsonpath
则通过选项开启:
Options options = Options.of().addStandard(Standard.JSONPath_Jayway);
ONode.ofJson(json, options).select("$.a[?@.b == 'kilo']");
对比列表:
IETF JSONPath (RFC 9535) | jayway.jsonpath | |
---|---|---|
[?] | 过滤 array:子项;object:值项;value:自己 | 过滤 array:后代;object,value:自己 |
.. | 联合才可为选择器,如:..name ,..* ,..[?] | 独立是个选择器 |
$..[?@.b.c == 1] | 对应 $..b[?(@.c == 1)] | |
..[?] | 过滤 自己和后代 | 过滤 后代 |