Ich ersetze JodaTime durch JSR310 und das Modul von JodaTime() war in Ordnung.Serialize Date, Instant zu ISO 8601 bei der Verwendung von JSR310 java.time im Frühjahr
Ich versuche, die Serialisierung meiner Daten in meiner Spring-Boot-Anwendung neu zu konfigurieren.
ich nicht beide so eine Art und Weise halten kann ich suche mein Date ISO zu serialisiert/deserialisiert 8601.
ich die Ratschläge hier gefolgt, aber das nicht hilft: Dieser http://lewandowski.io/2016/02/formatting-java-time-with-spring-boot-using-json/
meine ist JacksonConfig.java
mit dem 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);
}
}
}
die Bohne instanziiert erhalten, aber die serialize
und deserialize
nie aufgerufen.
Ich habe auch die JavaTimeModule
ohne den benutzerdefinierten Serializer/Deserializer versucht, es funktioniert auch nicht.
Es scheint überhaupt keine Wirkung zu haben.
Gibt es eine Möglichkeit, dies ein bisschen mehr zu debuggen?
Ich bin mit feder hateoas und Feder-Daten, ich habe dieses Problem, das in Zusammenhang stehen könnte:
https://github.com/spring-projects/spring-hateoas/issues/333
Wissen Sie, warum dies keinen Effekt hat und wie könnte. Ich debugge dies? Wie gesagt, der Deserialiser Serialize wird nie gefeuert – BigDong
Wie kann ich sie direkt zum Objekt Mapper hinzufügen? Es tut mir nicht leid – BigDong
Sie können das versuchen, ohne Java-Zeitmodul zu registrieren. Fügen Sie ser/deser mit einem einfachen Modul hinzu und registrieren Sie das Modul im Objekt mapper.SimpleModule module = new SimpleModule(); module.addSerializer (LocalDate.class, neuer LocalDateSerializer()); mapper.registerModule (Modul); etwas wie das. – Veeram