JAX-RS 2.1 では、JSON オブジェクトと Java オブジェクトとの間のシリアライゼーションおよびデシリアライゼーションに使用される内部ライブラリーが、Jackson から Yasson に変更されました。Yasson は、JSON-B の参照実装です。以下の例に示すように、Jackson と Yasson は、時刻に関連したオブジェクトを異なる方法でシリアライズします。
| Jackson | Yasson | |
|---|---|---|
| java.util.Date | 726213720000 | 1993-02-05T06:02:00Z[UTC] |
| java.util.Calendar | 726213720000 | 1993-02-05T00:00:00-06:00[America/Chicago] |
JSON 型データを作成または取り込むすべての JAX-RS リソース・メソッドが影響を受ける可能性があります。この規則は、JAX-RS リソース・メソッドによって作成または取り込まれるオブジェクトに含まれている java.util.Date フィールドまたは java.util.Calendar フィールドにフラグを立てます。
以下に、java.util.Date フィールドと java.util.Calendar フィールドを含む Java オブジェクトを作成および取り込む JAX-RS リソース・メソッドの例を示します。
このルールは java.util.Date と java.util.Calendar フィールドにフラグを立てる。 DataObject オブジェクトの
このルールでは、自動修正が提供され、 @JsonbDateFormat(value = JsonbDateFormat.TIME_IN_MILLIS ) という注釈がこれらのフィールドに追加される。 をこれらのフィールドに追加し、出力をエポックに変換します。 milliseconds.After 自動修正が適用されると、 DataObject クラスは次のように更新されます。 は以下のように更新されます:
注 @javax.json.bind.annotation.JsonbDateFormat アノテーションにアクセスするために、自動修正によって jsonb 機能が追加されます。 Liberty server.xml 設定ファイルに追加されます。 例えば、jaxrs-2.1 フィーチャーを使用している場合は、jsonb-1.0 フィーチャーを追加します。
Jackson と Yasson の動作の違いについて詳しくは、Jackson と JSON-B の動作を比較した Is it time for a JSON binding standard? という記事を参照してください。