2016-04-20 3 views
0

Я хочу отфильтровать некоторое выражение и выбрать только первые пять совпадений с этим выражением.Как применить фильтр И выбрать наибольшее количество совпадений в JSONPath

http://goessner.net/articles/JsonPath/ показывает, как сделать фильтр по значению:

$ .. книги [? (. @ Цена < 10)]

и как отфильтровать только первые матчи:

$ .. книга [: 2]

Но как я могу объединить эти два? Я пробовал разные подходы, но, похоже, не нашел ничего, что сработает.

ответ

1

В jsonpath-плюс, это может быть получен с помощью:

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

Это происходит потому, что @property здесь обычай особенность jsonpath-плюс для получения текущего свойства объекта, в данном случае, индекс массива.

JSFiddle

Я думаю, что оригинальный JSONPath спецификация, в то время как большой старт, была несколько под указана, поэтому она была расширена и была лучше документирована в https://github.com/s3u/JSONPath. Однако существуют другие реализации, по крайней мере на других языках, поэтому могут быть некоторые несоответствия в том, как это можно сделать (если вообще) в других реализациях.

(Отказ от ответственности: Я участвую в проекте jsonpath-plus.)

+1

Спасибо! К сожалению, я ограничен реализацией Jayways 2.1 (я использую JSONPath jmeter plugin). Я приму ваш ответ, если кто-то скоро не пойдет по почте. Думаю, мне придется сделать обходной путь в коде! – Cyberwiz

 Смежные вопросы

  • Нет связанных вопросов^_^