Wenn ich versuche Objekt von einem String deserialisieren und diese String enthält keine bestimmte Felder oder hat Felder, die nicht in meinem Objekt sind, Jackson Serializer ist völlig in Ordnung und erstellt nur mein Objekt mit null/Optional.empty() - Felder, auch unbekannte Eigenschaften ignorieren. Ich versuchte, Leser mit Eigenschaft FAIL_ON_UNKNOWN_PROPERTIES zu setzen, aber zu keinem Erfolg. Ich habe eine ziemlich einfache Jackson-Konfiguration, nicht viel neben dem Hinzufügen von Unterstützung für Java 8 und java.time.Jackson Deserializer nicht unbekannten Eigenschaften Fehler auf oder fehlende Werte
Edit:
public final ObjectReader reader;
public final ObjectWriter writer;
private JsonMapperTestInstance() {
ObjectMapper mapper = new JacksonConfiguration().objectMapper();
reader = mapper.reader();
writer = mapper.writer().withFeatures(SerializationFeature.INDENT_OUTPUT);
}
public <T> T deserialize(Class<T> actual, String serialized) throws IOException {
return reader.forType(actual).readValue(serialized);
}
JacksonConfiguration:
@Primary
@Bean
public ObjectMapper objectMapper() {
ObjectMapper mapper = new ObjectMapper();
registerModules(mapper);
mapper.setPropertyNamingStrategy(PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES);
return mapper;
}
@Bean
public JavaTimeModule javaTimeModule() {
return new JavaTimeModule();
}
@Bean
public Jdk8Module jdk8Module() {
return new Jdk8Module().configureAbsentsAsNulls(true);
}
private void registerModules(ObjectMapper mapper) {
mapper.registerModule(jdk8Module());
mapper.registerModule(javaTimeModule());
}
@Primary
@Bean
public ObjectWriter writer(ObjectMapper mapper) {
return mapper.writer();
}
@Primary
@Bean
public ObjectReader reader(ObjectMapper mapper) {
return mapper.reader();
}
Gibt es Unterschiede bei der Verwendung von @JsonIgnoreProperties (ignoreUnknown = false) in Ihrer Klasse? – JustOneMoreQuestion
Bitte Postleitzahl eingeben –