Выражение jayway jsonpath находит значение в коллекции строкJAVA

Программисты JAVA общаются здесь
Anonymous
Выражение jayway jsonpath находит значение в коллекции строк

Сообщение Anonymous »

У вас возникли трудности с созданием выражения фильтра с использованием jayway jsonpath для моего приложения Java, и вы хотите узнать, возможно ли следующее?
Можно ли написать выражение, которое найдет все объекты в массиве, где test.Value содержит "val", а test2.Value содержит "val".
Я пробовал такое выражение фильтра регулярного выражения, но возвращает все результаты, когда фильтр не должен ничего возвращать:

Код: Выделить всё

$..[?(@.test.Value[?(@ =~ /.*invalid/i)])]

Код: Выделить всё

[
{
"test": {
"Value": [
"value1",
"value2"
],
},
"test2": {
"Value": [
"value3",
"value4"
],
},
}
...
]
Было бы здорово, если бы я мог сделать это в одном выражении.
ОБНОВЛЕНИЕ:
Решено! Кому интересно, я не видел пустой оператор фильтра. Указание того, является ли пустым значением false или true, позволяет фильтру возвращать логическое значение, а не список! Урок усвоен.
  • Пример отсутствия совпадения...
Выражение: $..[?(@.test.Value[?(@ =~ /.*invalid/i)] пусто false)]
Результат: false (элемент списка слева пуст, поэтому пусто false) не встречается)
  • Пример поиска совпадений...
Выражение: $..[?(@.test.Value[?(@ =~ /.*ue1/i)] пусто false)]
Результат: true ( элемент списка слева заполнен, поэтому пустой false оценивается как true)

Подробнее здесь: https://stackoverflow.com/questions/778 ... of-strings

Вернуться в «JAVA»