В 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] |
Изменение касается всех методов ресурсов JAX-RS, которые предоставляют или используют данные типа JSON. Это правило отмечает все поля java.util.Date и
java.util.Calendar, содержащиеся в объекте, который предоставляется или
используется методом ресурса JAX-RS.
Ниже приведен пример методов ресурсов JAX-RS, которые предоставляют или
используют объект Java, содержащий поле java.util.Date или java.util.Calendar:
Это правило отмечает поля java.util.Date и
java.util.Calendar в объекте DataObject. Для этого правила доступно быстрое исправление в сканере исходного кода. Процедура быстрого исправления добавляет @JsonbDateFormat(value =
JsonbDateFormat.TIME_IN_MILLIS) в поля для преобразования вывода в число
миллисекунд с начала отсчета времени. После применения быстрого исправления класс DataObject будет изменен на:
Примечание: для получения доступа к аннотации
@javax.json.bind.annotation.JsonbDateFormat, добавленной
процедурой быстрого исправления, потребуется добавить компонент
jsonb в файл конфигурации server.xml Liberty. Например, если используется jaxrs-2.1, то необходимо добавить компонент jsonb-1.0.
За дополнительной информацией об отличиях Jackson от Yasson обратитесь к статье Is it time for a JSON binding standard?, в которой сравниваются принципы работы Jackson и JSON-B.