在 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 class 將更新如下:
注意:若要存取 @javax.json.bind.annotation.JsonbDateFormat 註解,自動修正程式會將 jsonb 功能新增到您的 Liberty server.xml 配置檔案。 例如,如果您是使用 jaxrs-2.1 特性,請新增 jsonb-1.0 特性。
如需 Jackson 與 Yasson 之間行為差異的相關詳細資料,請參閱比較 Jackson 與 JSON-B 行為的是否要符合 JSON 連結標準?文章。