web-dev-qa-db-ja.com

OR JSONPathの演算子?

単一のJSONPath式のみを使用して、ある種の「OR」または「||」を実行することは可能ですか?オペレーター。たとえば、次の2つのJSONPathブール式は、ログJSONファイルの重大度をチェックするために機能します。

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

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

しかし、私は論理的に次のようなことをしたいと思います。

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

これを行う方法はありますか?

11
Andrew G

から JSONPathページ

[、]-XPathのユニオン演算子は、ノードセットの組み合わせになります。 JSONPathでは、代替名または配列インデックスをセットとして使用できます。

試してみてください

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

編集:論理積の 未解決の問題 とOR演算子がまだないことを示す演算子があるようですJSONPathでサポート

6
sirugh

Goessnerのパーサーを使用している場合は、式内で次のように||演算子を使用できます。

$..log[?(@.severity == 'WARN' || @.severity == 'Error')]
15
elyas-bhy