如何应用过滤器并在JSONPath中选择最匹配的匹配项

时间:2016-04-20 15:39:41

标签: json jsonpath

我希望通过某个表达式进行过滤,只选择该表达式的前五个匹配项。

http://goessner.net/articles/JsonPath/显示了如何对值进行过滤:

$ ..书[(@价格< 10)?]

如何过滤掉第一场比赛:

$ ..书[:2]

但我如何将两者合并?我尝试了各种方法,但似乎无法找到有效的方法。

1 个答案:

答案 0 :(得分:1)

在jsonpath-plus中,可以通过以下方式检索:

var result = JSONPath({json: sample, path: '$..book[?(@property <= 5 && @.price<10)]'});

这是因为@property这里是jsonpath-plus的自定义功能,用于获取当前对象属性,在本例中为数组索引。

JSFiddle

我认为原始的JSONPath规范虽然是一个很好的开始,但是有点不明确,这就是为什么它得到了增强并且在https://github.com/s3u/JSONPath得到了更好的记录。但是,还有其他实现,至少在其他语言中,因此在其他实现中如何完成(如果有的话)可能存在一些差异。

(免责声明:我参与了jsonpath-plus项目。)