Я заменяю JodaTime на JSR310, и модуль JodaTime() работает нормально.Сериализовать дату, мгновенно до ISO 8601 при использовании JSR310 java.time весной
Я пытаюсь перенастроить сериализацию своих дат в моем приложении для загрузки весной.
Я не могу держать и поэтому я ищу способ сериализации/десериализации мою дату ISO 8601.
Я следовал советам здесь, но это не помогает: http://lewandowski.io/2016/02/formatting-java-time-with-spring-boot-using-json/
Этот мой JacksonConfig.java
с objectMapper
:
@Configuration
public class JacksonConfig extends RepositoryRestMvcConfiguration {
private static final Logger logger = LoggerFactory.getLogger(JacksonConfig.class);
public static final DateTimeFormatter FORMATTER = ofPattern("dd::MM::yyyy");
@Bean
// Override and Primary due to bug: https://github.com/spring-projects/spring-boot/issues/6529
@Override
@Primary
public ObjectMapper objectMapper() {
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
mapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, true);
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
JavaTimeModule javaTimeModule = new JavaTimeModule();
javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer());
javaTimeModule.addDeserializer(LocalDate.class, new LocalDateDeserializer());
mapper.registerModule(javaTimeModule);
return mapper;
}
public class LocalDateSerializer extends JsonSerializer<LocalDate> {
@Override
public void serialize(LocalDate value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
gen.writeString(value.format(FORMATTER));
}
}
public class LocalDateDeserializer extends JsonDeserializer<LocalDate> {
@Override
public LocalDate deserialize(JsonParser p, DeserializationContext ctx) throws IOException {
return LocalDate.parse(p.getValueAsString(), FORMATTER);
}
}
}
боб получить инстанциирован но serialize
и deserialize
никогда не дозвонились.
Я также пробовал JavaTimeModule
без специального сериализатора/десериализатора, он также не работает.
Это, кажется, не имеет никакого эффекта.
Есть ли способ отладить это немного больше?
Я использую пружинные hateoas и пружинные данных, у меня есть вопрос, который может быть связан:
https://github.com/spring-projects/spring-hateoas/issues/333
Знаете ли вы, почему это не имеет никакого эффекта и как может. Я отлаживаю это? Как я уже сказал, сериализация десериализатора никогда не срабатывает – BigDong
Как я могу добавить их непосредственно к объекту mapper? Мне не жалко – BigDong
Вы можете попробовать это, не регистрируя модуль времени java. Добавьте ser/deser с помощью простого модуля и зарегистрируйте модуль в mapper.SimpleModule module = new SimpleModule(); module.addSerializer (LocalDate.class, новый LocalDateSerializer()); mapper.registerModule (модуль); что-то вроде этого. – Veeram