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アノテーションを使用してマッピング・プロセスをカスタマイズできます。詳細は、次を参照してください:

この章の内容は次のとおりです。

デフォルト・マッピングについて

デフォルト・マッピングは、カスタマイズ・アノテーションおよびカスタム構成なしでデフォルトでJSON-Bエンジンによって使用されるルールのセットです。

このマッピングは、基本的なJavaタイプ(java.lang.String java.lang.Longjava.lang.Booleanなど)、Java SEタイプ(java.math.BigIntegerjava.util.Optionalなど)およびJava日付時間クラスのシリアライズおよびデシリアライズに使用されます。

JSON-Bのメイン・エントリ・ポイントはJsonbクラスです。オーバーロードされたtoJsonメソッドとfromJsonメソッドのセットを提供して、JavaオブジェクトをJSONドキュメントにシリアライズし、デシリアライズします。Jsonbインスタンスはスレッド・セーフであり、再利用が可能です。構成タイプごとに単一のインスタンスを持つことをお薦めします。

オブジェクト、コレクションまたは汎用コレクションをマップできます。

  • オブジェクトのマッピング

    オブジェクトをマップするには、最初にJsonbインスタンスを作成し、toJsonメソッドを使用してJSONにシリアライズし、fromJsonメソッドを使用してオブジェクトにデシリアライズする必要があります。

  • コレクションまたは汎用コレクションのマッピング

    JSON-Bは、コレクションおよび汎用コレクションの処理をサポートしています。正しいデシリアライズを行うには、デシリアライズ時に、結果として生成されたオブジェクトのランタイム・タイプをJSON-Bに渡す必要があります。

デフォルト・マッピングの詳細は、次を参照してください。

カスタマイズ済マッピングについて

マッピングは様々な方法でカスタマイズできます。コンパイル時のカスタマイズにはJSON-Bアノテーションを使用し、実行時のカスタマイズにはJsonbConfigクラスを使用します。

JSON-Bは次のカスタマイズをサポートしています。

  • フォーマットされた出力を使用したカスタム構成の作成
  • プロパティ名の変更
  • シリアライズされたプロパティの順序のカスタマイズ
  • プロパティの無視
  • デフォルトのnull処理の変更
  • カスタム・インスタンス化の使用
  • 日付書式および数値書式の変更
  • バイナリ・エンコーディングの使用
  • アダプタの使用
  • シリアライザ・クラスおよびデシリアライザ・クラスの使用
  • 厳密なI-JSONサポートの使用

カスタマイズ済マッピングの詳細は、次を参照してください。

JAX-RSのアプリケーションまたはJSONメディア・タイプを処理するための標準サポート

Jakarta JSON Bindingをサポートする製品では、実装は、JSON-BによってサポートされるすべてのJavaタイプのエンティティ・プロバイダを、メディア・タイプ(application/jsontext/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の理解サンプル・アプリケーションとサンプル・コードを参照してください。