Ich möchte, dass Jackson eine Klasse mit dem folgenden Konstruktor deserialisiert:
public Clinic(String name, Address address)
Das erste Argument zu deserialisieren ist einfach. Das Problem ist, dass die Adresse wie folgt definiert ist:
public class Address {
private Address(Map<LocationType, String> components)
...
public static class Builder {
public Builder setCity(String value);
public Builder setCountry(String value);
public Address create();
}
}
und ist so aufgebaut: new Address.Builder().setCity("foo").setCountry("bar").create();
Gibt es eine Möglichkeit, Schlüssel-Wert-Paare von Jackson zu erhalten, um die Adresse selbst zu erstellen? Gibt es eine Möglichkeit, Jackson dazu zu bringen, die Builder-Klasse selbst zu verwenden?
@JsonPOJOBuilder
Annotation insgesamt entfernen möchten, benennen Sie "create" in "build" um und kommentieren Sie jeden der Builder-Setter mit@JsonProperty
.Die Antwort von @Rupert Madden-Abbott funktioniert. Wenn Sie jedoch einen nicht standardmäßigen Konstruktor haben, z.
Dann sollten Sie die Parameter wie folgt kommentieren:
quelle
Am Ende habe ich dies mit @JsonDeserialize wie folgt implementiert:
quelle
Eine Lösung, die in diesem Fall für mich geeignet war (ich habe die Builder-Annotation "Lombok" verwendet).
Ich hoffe, es wäre auch für dich nützlich.
quelle
Derzeit gibt es keine Unterstützung für das Builder-Muster, obwohl es vor einiger Zeit angefordert wurde (und schließlich wurde das Jira-Problem http://jira.codehaus.org/browse/JACKSON-469 eingereicht) - es kann hinzugefügt werden für 1.8 Release, wenn genügend Nachfrage besteht (stimmen Sie bei Jira ab!). Es ist eine vernünftige zusätzliche Funktion und wird nur durch die Zeit verzögert, die Entwickler haben. Aber ich denke, es wäre eine großartige Ergänzung.
quelle
Das hat bei mir funktioniert: @NoArgsConstructor Der einzige Nachteil dabei ist, dass man = new ADTO () wieder machen kann. Aber hey, ich mag die Code-Polizei sowieso nicht und sage mir, wie man jemandes Code verwendet :-) Also, benutze mein POJO DTOS so, wie du es magst. Mit oder ohne Builder. Ich schlage vor: mach es mit einem Baumeister, aber sei mein Gast ...
quelle