Ich habe eine einfache Schnittstelle mit Getter und Setter für eine Eigenschaft.Ignorieren Eigenschaft beim Deserialisieren
Ich habe eine andere Klasse UserAccount, die diese Schnittstelle implementiert.
public class UserAccount implements HasMoney {
private Money money;
@Override
Money getMoney() // fill in the blanks
@Override
void setMoney(Money money) // fill in the blanks
}
Mein Problem ist, dass ich das Geld Eigenschaft serialisiert werden wollen, aber ignorieren, während es heißt Deserialisieren sind, tragen zu diesem Objekt keine Werte vom Benutzer akzeptieren. Ich habe versucht, @ JsonIgnore auf Setter und @ JsonIgnore (false) auf dem Getter, es ignoriert es, aber es tut dies, während es auch serialisieren.
Ich versuchte @JsonIgnore auf dem Setter und @JsonProperty auf dem Getter, nur Jackson ausdrücklich zu sagen, dass wir diese Eigenschaft verfolgen wollen, die die Anwendung abstürzt, wenn Geld Eigentum an den Server gesendet wird und Jackson versucht es zu deserialisieren MalformedJsonException hochwerfen: kann kein Objekt des Typs Money erstellen.
Die seltsamste Sache ist, dass @ JsonIgnore auf den Setter und @ JsonProperty auf den Setter funktioniert in den meisten Fällen, wenn die Eigenschaft primitiv ist.
Dies ist eigentlich ein Teil der Lösung ist. Ich musste auch objectMapper.disable (MapperFeature.USE_GETTERS_AS_SETTERS) hinzufügen und es funktionierte dann. Bitte editiere deine Antwort und ich werde sie akzeptieren. Es ist traurig, dass es keinen saubereren Weg dazu gibt (ich konnte es nicht finden). –
@NishantNagwani - ungerade, funktioniert für mich ohne diese Funktion aktiviert. Ich füge eine optionale Anmerkung zu meiner Antwort hinzu, aber ich bin gespannt, ob etwas an Ihrer Einrichtung anders ist, was 'USE_GETTERS_AS_SETTERS' erforderlich machen würde. – Perception
Ich habe es noch einmal versucht. Funktioniert nicht mit meiner Umgebung. Ich benutze Jackson 2.1.1. Hier ist der Fehler, den ich bekomme { { "Nachricht": "Malformed JSON an den Server übergeben, falsche Datentyp verwendet: \ nProblem Deserialisierung 'Setterless' Eigenschaft 'Geld': Get-Methode zurückgegeben Null (durch Referenzkette: com.abc. def.Money]) " } –