Есть ли модуль данных Jackson для JDK8 java.time?
Я ищу модуль для новых classов java.time JDK8 . Я просмотрел список проектов FasterXML GitHub и в настоящее время не нашел его.
Насколько я понимаю, jackson все еще компилируется против JDK6, поэтому не может напрямую использовать эти classы и должен иметь это встроенное в отдельный модуль, как это требовалось с Joda.
Я не против запуска проекта, хотя и хочу посмотреть, не предпринимаются ли какие-либо другие усилия.
- Как анализировать / форматировать даты с помощью LocalDateTime? (Java 8)
- Формат JSON Java 8 LocalDateTime в Spring Boot
- Преобразование между LocalDate и sql.Date
- Преобразовать java.util.Date в java.time.LocalDate
- Почему я не могу получить продолжительность в минутах или часах в java.time?
- Вычислить дни между двумя датами в Java 8
- Как сохранить типы JSR-310 с помощью Spring Data JPA?
- LocalDate - java.util.Date и наоборот - простое преобразование?
- Единичное тестирование classа с помощью Java 8 Clock
- Преобразовать java.time.LocalDate в тип java.util.Date
- Является ли java.time неспособным анализировать долю секунды?
- Строка Parsing на локальную дату не использует желаемый век
- Преобразование между java.time.LocalDateTime и java.util.Date
Самый полный список модhive типа данных можно найти на странице портала «jackson» в Github:
https://github.com/FasterXML/jackson
который перечисляет «JSR-310: поддержка« Java 8 Dates ». Именование является непрозрачным, но оно относится к процессу стандартизации через JSR, который должен быть завершен для создания нового API дат Java8 (если он еще не окончательный, процесс занимает некоторое время).
Прямая ссылка: https://github.com/FasterXML/jackson-datatype-jsr310
Как уже упоминалось, Jackson-Datatype-JSR310 поддерживает Java 8 Time.
Поскольку Jackson 2.6.0 «старый» JSR310Module устарел. Он заменяется JavaTimeModule. Зависимость от Maven одинакова (вы можете найти текущую версию в Maven Central ):
com.fasterxml.jackson.datatype jackson-datatype-jsr310 2.6.0
Вы должны зарегистрировать модуль следующим образом:
ObjectMapper mapper = new ObjectMapper(); mapper.registerModule(new JavaTimeModule());
Обратите внимание: начиная с версии 2.6, этот модуль НЕ поддерживает автоматическую регистрацию из-за существования устаревшей версии JSR310Module. Унаследованная версия имеет одинаковую функциональность, но немного другую конфигурацию по умолчанию: см. Com.fasterxml.jackson.datatype.jsr310. JSR310Module для деталей.
Источник JavaTimeModule в GitHub
Использование JavaTimeModule
Вам просто нужно импортировать модуль jsr310 .
com.fasterxml.jackson.datatype jackson-datatype-jsr310 2.5.0
Если автоматическое сканирование модуля не включено в вашем проекте, вам необходимо зарегистрировать его:
ObjectMapper mapper = new ObjectMapper(); mapper.registerModule(new JSR310Module());
Мой плохой, я искал jackson-datatype-jdk8
как и для jackson-datatype-jdk7 , однако проект был фактически создан под именем JSR jackson-datatype-jsr310 .
Если вы используете Spring Boot 2 и зависит от spring-boot-starter-web
стартера spring-boot-starter-web
стартера, у вас будут как зависимости, так и устаревшие (jackson-datatype-jsr310) и фактические (jackson-datatype-jdk8).
[INFO] + - org.springframework.boot: spring-boot-starter-web: jar: 2.0.0.M3: скомпилировать [INFO] | + - org.springframework.boot: spring-boot-starter-json: jar: 2.0.0.M3: скомпилировать [INFO] | | + - com.fasterxml.jackson.datatype: jackson-datatype-jdk8: jar: 2.9.0.pr4: скомпилировать [INFO] | | + - com.fasterxml.jackson.datatype: jackson-datatype-jsr310: jar: 2.9.0.pr4: скомпилировать