Solon v3.6.0

snack - JsonPath 标准兼容与选择

</> markdown

snack-jsonpath 同时兼容 jayway.jsonpathIETF 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)]
..[?]过滤 自己和后代过滤 后代