このプロジェクトについて

Jayway JsonPathは、JsonPathクエリ言語を実装したJavaライブラリで、XMLに対するXPathと同様のパス式を使用してJSONドキュメントからデータを抽出できます。これはStefan GoessnerのJsonPath実装の移植版であり、Maven Centralで入手可能です。 ## 主な機能 - **パス式**: ドット記法(`$.store.book[0].title`)とブラケット記法(`$['store']['book'][0]['title']`)をサポートし、JSON構造をナビゲートします。 - **演算子**: ワイルドカード(`*`)、ディープスキャン(`..`)、配列スライス(`[start:end]`)、フィルタ式(`[?(<expression>)]`)を含みます。 - **関数**: `min()`、`max()`、`avg()`、`length()`、`sum()`、`first()`、`last()`などの組み込み関数があり、パスの末尾で適用できます。 - **フィルタ述語**: 論理演算子(`&&`、`||`、`!`)と比較演算子(`==`、`!=`、`<`、`>`、`=~`、`in`、`nin`など)をサポートし、複雑なフィルタリングが可能です。 - **流暢なAPI**: JSONドキュメントを再解析せずに繰り返し読み取るための柔軟な`ReadContext`を提供します。 - **設定オプション**: `Configuration`と`Option`フラグ(例:`ALWAYS_RETURN_LIST`、`SUPPRESS_EXCEPTIONS`)でカスタマイズ可能です。 - **複数のJSONプロバイダ**: JSON-smart(デフォルト)、Jackson、Gson、JSON-P、JSON-B用のプロバイダが同梱されており、さまざまなJSONライブラリと統合できます。 - **キャッシュSPI**: 解析済みパスのプラグ可能なキャッシュをサポートし、`LRUCache`や`NOOPCache`などのデフォルト実装があります。 - **ドキュメント変更**: JSONドキュメント内の値の設定、追加、削除が可能で、特定のプロバイダでは可変JSON構造をサポートします。 ## 使用例 ```java String json = "..."; List<String> authors = JsonPath.read(json, "$.store.book[*].author"); ``` 繰り返し読み取る場合は、一度解析します: ```java Object document = Configuration.defaultConfiguration().jsonProvider().parse(json); String author = JsonPath.parse(document).read("$.store.book[0].author"); ``` ## 要件 - バージョン3.0.0はJava 17が必要で、Jackson 3をサポートします。 - Jackson、Gson、JSON-P、JSON-Bなどのプロバイダは、クラスパスに追加の依存関係が必要です。 ## ドキュメント 詳細については、[公式ドキュメント](http://www.javadoc.io/doc/com.jayway.jsonpath/json-path)を参照し、Stack Overflowで「jsonpath」と「java」のタグを付けて質問してください。