Spring Boot настаивает на сериализации моих данных ZonedDateTime типа в виде временной метки с плавающей точкой за несколько секунд. Я пробовал все методы в Интернете, но ни один из них не мог заставить его сдаться.
точнее, контроллер REST всегда сериализует поля типа ZONEDDATETIME как временные метки с плавающей точкой. для контроллера остального. Мой пользовательский код сериализации даже не выполняется. Это действительно основа, которую трудно контролировать.@Configuration
public class JacksonConfig {
// The code was indeed executed, but it didn't work; at least the rest controller ignored me
@Bean
@Primary
public ObjectMapper objectMapper(Jackson2ObjectMapperBuilder builder) {
var objectMapper = builder.build();
SimpleModule module = new SimpleModule("CustomZonedDateTimeModule");
module.addSerializer(ZonedDateTime.class, new ZonedDateTimeTimestampSerializer());
objectMapper.registerModule(module);
return objectMapper;
}
}
< /code>
@JsonComponent // I have tried @JsonComponent, not work.
public class ZonedDateTimeTimestampSerializer extends JsonSerializer {
@Override
public void serialize(ZonedDateTime value, JsonGenerator gen, SerializerProvider serializers)
throws IOException {
if (value != null) {
gen.writeNumber(value.toInstant().toEpochMilli());
}
}
}
< /code>
@Configuration
public class JacksonConfig implements Jackson2ObjectMapperBuilderCustomizer {
// The code was indeed executed, but it didn't work; at least the rest controller ignored me
public void customize(Jackson2ObjectMapperBuilder builder) {
SimpleModule module = new SimpleModule("CustomZonedDateTimeModule");
module.addSerializer(ZonedDateTime.class, new ZonedDateTimeTimestampSerializer());
builder.modules(module);
}
}
< /code>
@Configuration
public class JacksonConfig {
// The code was indeed executed, but it didn't work; at least the rest controller ignored me
@Bean
@Primary
public JavaTimeModule javaTimeModule() {
var module = new JavaTimeModule();
module.addSerializer(ZonedDateTime.class, new ZonedDateTimeTimestampSerializer());
return module;
}
}
< /code>
Кроме того, просто чтобы упомянуть, я использую Webflux, не уверен, что это имеет значение. Трудно поверить, что такая, казалось бы, простая проблема оторвала меня; Природа Black Box's Spring слишком сильна, а конфигурация чрезмерно непрозрачна.
Подробнее здесь: https://stackoverflow.com/questions/797 ... as-a-float