11 Java API for JSON Binding
JSON Binding (JSON-B)は、JSONメッセージに、またはJSONメッセージからJavaオブジェクトを変換するための標準バインディング・レイヤーです。Oracle WebLogic Server 14.1.1.0.0では、JSR-367リファレンス実装を含めることにより、Java API for JSON Binding 1.0 (JSR 367)の仕様をサポートし、これをWebLogic Serverインスタンスにデプロイされるアプリケーションで使用できるようにしています。
JSON-Bは、既存のJavaクラスをJSONに変換するためのデフォルトのマッピング・アルゴリズムを定義する一方で、開発者はJavaアノテーションを使用してマッピング・プロセスをカスタマイズできます。詳細は、次を参照してください:
- Java EE 8チュートリアルのJSON Bindingに関する項。
- JSON Binding 1.0ユーザーズ・ガイド
- JSON Bindingパッケージ・サマリー
この章の内容は次のとおりです。
- デフォルト・マッピングについて
デフォルト・マッピングは、デフォルトでJSON-Bエンジンによって使用されるルールのセットで、カスタマイズ・アノテーションやカスタム構成が行われていないものです。 - カスタマイズ済マッピングについて
マッピングは様々な方法でカスタマイズできます。コンパイル時のカスタマイズにはJSON-Bアノテーションを使用し、実行時のカスタマイズにはJsonbConfigクラスを使用します。 - JAX-RSのアプリケーションまたはJSONメディア・タイプを処理するための標準サポート
Java API for JSON-Bをサポートする製品では、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チュートリアルのデフォルト・マッピングの使用に関する項
親トピック: Java API for JSON Binding
カスタマイズ済マッピングについて
マッピングは様々な方法でカスタマイズできます。コンパイル時のカスタマイズにはJSON-Bアノテーションを使用し、実行時のカスタマイズにはJsonbConfigクラスを使用します。
JSON-Bは次のカスタマイズをサポートしています。
- フォーマットされた出力を使用したカスタム構成の作成
- プロパティ名の変更
- シリアライズされたプロパティの順序のカスタマイズ
- プロパティの無視
- デフォルトのnull処理の変更
- カスタム・インスタンス化の使用
- 日付書式および数値書式の変更
- バイナリ・エンコーディングの使用
- アダプタの使用
- シリアライザ・クラスおよびデシリアライザ・クラスの使用
- 厳密なI-JSONサポートの使用
カスタマイズ済マッピングの詳細は、次を参照してください。
- JSON Binding 1.0ユーザーズ・ガイドのカスタマイズ済マッピングに関する項
- Java EE 8チュートリアルのカスタマイズの使用に関する項
親トピック: Java API for JSON Binding
JAX-RSのアプリケーションまたはJSONメディア・タイプを処理するための標準サポート
Java API for JSON-Bをサポートする製品では、実装は、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ディレクトリ内に、Java API for JSON BindingをJAX-RSとともに使用する方法を示す例が提供されます。ORACLE_HOMEは、WebLogic Serverをインストールしたディレクトリを表します。WebLogic Serverのサンプル・コードの詳細は、Oracle WebLogic Serverの理解のサンプル・アプリケーションとサンプル・コードを参照してください。
親トピック: Java API for JSON Binding