我希望通过某个表达式进行过滤,只选择该表达式的前五个匹配项。
http://goessner.net/articles/JsonPath/显示了如何对值进行过滤:
$ ..书[(@价格< 10)?]
如何过滤掉第一场比赛:
$ ..书[:2]
但我如何将两者合并?我尝试了各种方法,但似乎无法找到有效的方法。
答案 0 :(得分:1)
在jsonpath-plus中,可以通过以下方式检索:
var result = JSONPath({json: sample, path: '$..book[?(@property <= 5 && @.price<10)]'});
这是因为@property
这里是jsonpath-plus的自定义功能,用于获取当前对象属性,在本例中为数组索引。
我认为原始的JSONPath规范虽然是一个很好的开始,但是有点不明确,这就是为什么它得到了增强并且在https://github.com/s3u/JSONPath得到了更好的记录。但是,还有其他实现,至少在其他语言中,因此在其他实现中如何完成(如果有的话)可能存在一些差异。
(免责声明:我参与了jsonpath-plus项目。)