Я использую kotlin с весенней загрузкой. Когда я запрашиваю конечную точку, которая должна вернуть мне объект LocalDateTime
, она возвращает мне массив вместо строки.
Пример:
"createdAt": [
2020,
12,
16,
23,
26,
10,
932070000
]
Что я ожидаю:
"createdAt": "2020-12-16 23:26:10"
Я создал Jackson2ObjectMapperBuilderCustomizer
, но похоже, что он вообще не работает
@Configuration
class JacksonObjectMapperConfiguration {
companion object {
private const val dateFormat = "yyyy-MM-dd"
private const val dateTimeFormat = "yyyy-MM-dd HH:mm:ss"
}
@Bean fun jackson2ObjectMapperBuilderCustomizer(): Jackson2ObjectMapperBuilderCustomizer {
return Jackson2ObjectMapperBuilderCustomizer {
builder -> builder.simpleDateFormat(dateFormat)
builder.serializers(LocalDateSerializer(DateTimeFormatter.ofPattern(dateFormat)))
builder.serializers(LocalDateTimeSerializer(DateTimeFormatter.ofPattern(dateTimeFormat)))
}
}
@Bean
@Primary
fun objectMapper(): ObjectMapper =
ObjectMapper()
.registerModule(KotlinModule())
}
Моя build.gradle.kts
зависимость от Джексона
implementation(group = "com.fasterxml.jackson.module", name = "jackson-module-kotlin", version = "2.11.3")
Я хочу создать глобальный сериализатор LocalDateTime и LocalDate для всех полей в моем приложении, есть идеи, как с этим справиться?
@MadhuBhat извините, но это не помогло
Проблема исправлена после того, как я удалил @EnableWebMvc
в одном из моих классов конфигурации.
Для меня это было удаление @EnableWebFlux
в классе @Configuration
, где я реализовывал WebFluxConfigurer
и предоставлял сопоставления CORS. Спасибо за совет. Как и вы, я пробовал почти все для пользовательской сериализации json безрезультатно.
Вам также нужно будет зарегистрировать
JavaTimeModule
для objectMapper. Попробуйте этот мой ответ, хотя он и на Java, но похож.