ObjectMapper kann nicht deserialisiert werden, ohne Standard-Konstruktor nach dem upgrade auf Spring Boot 2

Habe ich folgende DTOs:

@Value
public class PracticeResults {
    @NotNull
    Map<Long, Boolean> wordAnswers;
}

@Value
public class ProfileMetaDto {

    @NotEmpty
    String name;
    @Email
    String email;
    @Size(min = 5)
    String password;
}

@Value ist ein Lombok-Annotationen generiert ein Konstruktor. Was bedeutet, dass diese Klasse nicht mit einem no-arg-Konstruktor.

Ich verwendet, Spring Boot 1.4.3.RELEASE und ObjectMapper bean war in der Lage zu Deserialisieren solche json-Objekt aus.

Nach dem upgrade auf Spring Boot 2.0.0.M7 erhalte ich folgende exception:

com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of PracticeResults (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator)

Jackson-version verwendet, die im Frühjahr Starten 1.4.3 ist 2.8.10 und für die Spring-Boot-2.0.0.M7 ist 2.9.2.

Habe ich versucht Google dieses problem, fand aber nur Lösungen mit @JsonCreator oder @JsonProperty.

So, warum funktioniert es mit Spring Boot 1.4.3 und schlägt mit Spring Boot 2? Ist es möglich zu konfigurieren bean auf die gleiche Weise Verhalten wie die ältere version?

Einfach Fragen, haben Sie versucht, aktualisieren Jackson auf das neueste stabile release 2.9.4? Der changelog enthält einige spezifische Korrekturen bezüglich der Karte der Deserialisierung. github.com/FasterXML/jackson/wiki/Jackson-Release-2.9.3
Ich habe versucht neuere version aber nichts geändert. Ich habe verschiedene DTOs mit ein paar Saiten, die auch nicht zu Deserialisieren. Ich denke, dass es irgendwie mit der Spring-Konfiguration der Objekt-mapper, aber ich konnte nicht finden, alles, was mit default-Konstruktoren.
Welche version von Lombok verwenden Sie in jedem Fall?
wow!!! Ich habe versucht, neue lombok version für spring boot 1.4.3 und bekam die gleiche Ausnahme. Bedeutet es, dass lombok 1.16.12 generiert no-arg-Konstruktor mit @Value annotation?
ich habe versucht Google dieses problem, fand aber nur Lösungen mit @JsonCreator oder @JsonProperty, das ist die Antwort. Jackson erfordert diese Anmerkungen auf einen Konstruktor, um zu wissen, wie die Zuordnung der Werte in die es, oder es muss ein default no-args constructor so wie die Fehlermeldung besagt eindeutig, und Sie haben weder, das ist, warum es nicht funktioniert.

InformationsquelleAutor solomkinmv | 2018-01-18

Schreibe einen Kommentar