11 Jakarta JSON Binding
Jakarta JSON Binding (JSON-B)は、JSONメッセージに、またはJSONメッセージからJavaオブジェクトを変換するための標準バインディング・レイヤーです。Oracle WebLogic Server 14.1.2.0.0では、JSR-367リファレンス実装を含めて、WebLogic Serverインスタンスにデプロイされるアプリケーションで使用できるようにすることで、Jakarta JSON Bindingの仕様をサポートしています。
JSON-Bは、既存のJavaクラスをJSONに変換するためのデフォルトのマッピング・アルゴリズムを定義する一方で、開発者はJavaアノテーションを使用してマッピング・プロセスをカスタマイズできます。詳細は、次を参照してください:
- Java EE 8チュートリアルのJSON Bindingに関する項。
- JSON Binding 1.0ユーザーズ・ガイド
- JSON Bindingパッケージ・サマリー
この章の内容は次のとおりです。
- デフォルト・マッピングについて
デフォルト・マッピングは、デフォルトでJSON-Bエンジンによって使用されるルールのセットで、カスタマイズ・アノテーションやカスタム構成が行われていないものです。 - カスタマイズ済マッピングについて
マッピングは様々な方法でカスタマイズできます。コンパイル時のカスタマイズにはJSON-Bアノテーションを使用し、実行時のカスタマイズにはJsonbConfig
クラスを使用します。 - JAX-RSのアプリケーションまたはJSONメディア・タイプを処理するための標準サポート
Jakarta JSON Bindingをサポートする製品では、実装は、JSON-BによってサポートされるすべてのJavaタイプのエンティティ・プロバイダを、メディア・タイプ(application/json
、text/json
、および*/json
や*/*+json
に一致する他のメディア・タイプ)と組み合せてサポートする必要があります。
デフォルト・マッピングについて
デフォルト・マッピングは、カスタマイズ・アノテーションおよびカスタム構成なしでデフォルトでJSON-Bエンジンによって使用されるルールのセットです。
このマッピングは、基本的なJavaタイプ(java.lang.String
、 java.lang.Long
、java.lang.Boolean
など)、Java SEタイプ(java.math.BigInteger
、java.util.Optional
など)およびJava日付時間クラスのシリアライズおよびデシリアライズに使用されます。
JSON-Bのメイン・エントリ・ポイントはJsonb
クラスです。オーバーロードされたtoJson
メソッドとfromJson
メソッドのセットを提供して、JavaオブジェクトをJSONドキュメントにシリアライズし、デシリアライズします。Jsonb
インスタンスはスレッド・セーフであり、再利用が可能です。構成タイプごとに単一のインスタンスを持つことをお薦めします。
オブジェクト、コレクションまたは汎用コレクションをマップできます。
-
オブジェクトのマッピング
オブジェクトをマップするには、最初に
Jsonb
インスタンスを作成し、toJson
メソッドを使用してJSONにシリアライズし、fromJson
メソッドを使用してオブジェクトにデシリアライズする必要があります。 -
コレクションまたは汎用コレクションのマッピング
JSON-Bは、コレクションおよび汎用コレクションの処理をサポートしています。正しいデシリアライズを行うには、デシリアライズ時に、結果として生成されたオブジェクトのランタイム・タイプをJSON-Bに渡す必要があります。
デフォルト・マッピングの詳細は、次を参照してください。
- JSON Binding 1.0ユーザーズ・ガイドのデフォルト・マッピングに関する項
- Java EE 8チュートリアルのデフォルト・マッピングの使用に関する項
親トピック: Jakarta JSON Binding
カスタマイズ済マッピングについて
マッピングは様々な方法でカスタマイズできます。コンパイル時のカスタマイズにはJSON-Bアノテーションを使用し、実行時のカスタマイズにはJsonbConfig
クラスを使用します。
JSON-Bは次のカスタマイズをサポートしています。
- フォーマットされた出力を使用したカスタム構成の作成
- プロパティ名の変更
- シリアライズされたプロパティの順序のカスタマイズ
- プロパティの無視
- デフォルトのnull処理の変更
- カスタム・インスタンス化の使用
- 日付書式および数値書式の変更
- バイナリ・エンコーディングの使用
- アダプタの使用
- シリアライザ・クラスおよびデシリアライザ・クラスの使用
- 厳密なI-JSONサポートの使用
カスタマイズ済マッピングの詳細は、次を参照してください。
- JSON Binding 1.0ユーザーズ・ガイドのカスタマイズ済マッピングに関する項
- Java EE 8チュートリアルのカスタマイズの使用に関する項
親トピック: Jakarta JSON Binding
JAX-RSのアプリケーションまたはJSONメディア・タイプを処理するための標準サポート
Jakarta JSON Bindingをサポートする製品では、実装は、JSON-BによってサポートされるすべてのJavaタイプのエンティティ・プロバイダを、メディア・タイプ(application/json
、text/json
、および*/json
や*/*+json
に一致する他のメディア・タイプ)と組み合せてサポートする必要があります。
ノート:
JSON-BとJSON-Pの両方が同じ環境でサポートされている場合、JsonValue
とそのサブタイプを除くすべてのタイプについて、JSON-Bのエンティティ・プロバイダがJSON-Pのエンティティ・プロバイダより優先されます。JSON-Pの優先順位に注意してください。
WebLogic Serverサンプルのインストールを選択した場合、WebLogic ServerディストリビューションのORACLE_HOME\wlserver\samples\server\examples\src\examples\javaee8\jsonb\jaxrs
ディレクトリ内に、Jakarta JSON BindingをJAX-RSとともに使用する方法を示す例が提供されます。ORACLE_HOME
は、WebLogic Serverをインストールしたディレクトリを表します。WebLogic Serverのサンプル・コードの詳細は、Oracle WebLogic Serverの理解のサンプル・アプリケーションとサンプル・コードを参照してください。
親トピック: Jakarta JSON Binding