ИЛИ оператор в JSONPath?
Используя одно только выражение JSONPath, можно ли сделать что-то вроде "ИЛИ" или "||" оператор. Например, эти два логических выражения JSONPath работают для проверки серьезности файла JSON журнала:
$..log[?(@.severity == 'WARN')]
$..log[?(@.severity == 'Error')]
Но я хотел бы сделать что-то логически похожее на:
$..log[?(@.severity == 'WARN' or @.severity == 'Error')] //this is not correct
Есть какой-либо способ сделать это?
3 ответа
[,] - Оператор объединения в XPath приводит к комбинации наборов узлов. JSONPath позволяет использовать альтернативные имена или индексы массива в виде набора.
Пытаться
$..log[?(@.severity == 'WARN'), ?(@.severity == 'Error')]
Редактировать: похоже, что существует открытая проблема для логических операторов И и ИЛИ, в которой они заявляют, что операторы еще не поддерживаются JSONPath.
Если вы используете парсер Гесснера, вы можете использовать ||
оператор в вашем выражении следующим образом:
$..log[?(@.severity == 'WARN' || @.severity == 'Error')]
Спасибо за ваши ответы. В моем случае я заработал, объединив два ответа от @sirugh и @elyas-bhy.
$..log[?(@.severity == 'WARN') || ?(@.severity == 'Error')]