ИЛИ оператор в JSONPath?

Используя одно только выражение JSONPath, можно ли сделать что-то вроде "ИЛИ" или "||" оператор. Например, эти два логических выражения JSONPath работают для проверки серьезности файла JSON журнала:

$..log[?(@.severity == 'WARN')]

$..log[?(@.severity == 'Error')]

Но я хотел бы сделать что-то логически похожее на:

$..log[?(@.severity == 'WARN' or @.severity == 'Error')] //this is not correct 

Есть какой-либо способ сделать это?

3 ответа

Решение

Со страницы JSONPath:

[,] - Оператор объединения в XPath приводит к комбинации наборов узлов. JSONPath позволяет использовать альтернативные имена или индексы массива в виде набора.

Пытаться

$..log[?(@.severity == 'WARN'), ?(@.severity == 'Error')]

Редактировать: похоже, что существует открытая проблема для логических операторов И и ИЛИ, в которой они заявляют, что операторы еще не поддерживаются JSONPath.

Если вы используете парсер Гесснера, вы можете использовать || оператор в вашем выражении следующим образом:

$..log[?(@.severity == 'WARN' || @.severity == 'Error')]

Спасибо за ваши ответы. В моем случае я заработал, объединив два ответа от @sirugh и @elyas-bhy.

      $..log[?(@.severity == 'WARN') || ?(@.severity == 'Error')]
Другие вопросы по тегам