1

次の文字列を jsonPath に渡して、オブジェクトのコレクションをフィルタリングする場合:

$[?(en|**|(@.object.property.one=='other') && (@.object.property.two=='something(abc/def)'))]

次のエラーが表示されます。

jsonPath: Unexpected token ILLEGAL: (_v.object.property.one=='other') && (_v.object.property.two=='something(abc/def))

私の最初の推測では、不正な文字は丸括弧またはリテラル値内に存在するスラッシュと関係があるということです。これは、最後のリテラルを囲む単一引用符が欠落している理由を説明している可能性があります。丸括弧とスラッシュの両方をエスケープしようとしましたが、役に立ちませんでした。フィルター メソッドが上記の例外をスローする原因は何ですか?

4

1 に答える 1

1

jsonPath のドキュメントをざっと読んでみると、ブラケットが思った通りの働きをしていないように見えます。

XPath では、ブラケットはグループ化に使用されますが、jsonPath ではスクリプト式に使用されます (基になるスクリプト エンジンが何であれ)。

スクリプト式として提示している値が無効である可能性があります。

于 2012-07-26T13:55:10.330 に答える