Verwenden Sie @JsonIgnore nur während der Serialisierung, aber nicht für die Deserialisierung
Habe ich ein user-Objekt gesendet und von dem server. Wenn ich senden Sie die Benutzer-Objekt-ich will nicht senden Sie das gehashte Passwort an den client. Also ich habe @JsonIgnore
auf die password-Eigenschaft, aber auch blockiert wird deserialisiert in das Passwort ein, welches es schwierig macht, zu unterzeichnen, bis die Anwender, wenn Sie ain ' T got ein Passwort.
Wie bekomme ich nur @JsonIgnore
zu übernehmen, um die Serialisierung und nicht Deserialisierung? Ich bin mit Spring JSONView so dass ich don ' T haben eine Tonne von Kontrolle über die ObjectMapper
.
Dinge, die ich versucht habe:
- Hinzufügen
@JsonIgnore
auf die Eigenschaft - Hinzufügen
@JsonIgnore
auf die get-Methode nur
InformationsquelleAutor der Frage chubbsondubs | 2012-09-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Genau, wie Sie dies tun, hängt von der version von Jackson, die Sie verwenden. Dies änderte sich um die version 1.9vor, das konnten Sie tun dies, indem Sie
@JsonIgnore
den getter.Dem Sie versucht habe:
Hierzu und auch fügen Sie ein spezifisches
@JsonProperty
annotation für Ihre JSON-Feld "Passwort" name der setter-Methode für das Kennwort auf Ihrem Objekt.Neueren Versionen von Jackson Hinzugefügt haben
READ_ONLY
undWRITE_ONLY
annotation Argumente fürJsonProperty
. So könnte man auch etwas wie:Docs finden hier.
InformationsquelleAutor der Antwort pb2q
Um dies zu erreichen, alles, was wir brauchen, ist zwei Anmerkungen :
@JsonIgnore
@JsonProperty
Verwenden
@JsonIgnore
auf Schüler und deren getter.Verwenden
@JsonProperty
auf seine setter.Eine Beispielabbildung helfen würde, dies zu tun :
InformationsquelleAutor der Antwort Balaji Boggaram Ramanarayan
Seit der version 2.6: ein intuitiver Weg ist die Verwendung des
com.fasterxml.jackson.annotation.JsonProperty
annotation auf dem Feld:Selbst wenn ein getter vorhanden ist, wird der Feldwert ist ausgeschlossen von der Serialisierung.
JavaDoc sagt:
Den Fall, Sie müssen es anders herum, nur verwenden
Access.READ_ONLY
.InformationsquelleAutor der Antwort Daniel Beer
In meinem Fall habe ich Jackson automatisch serialisieren/Deserialisieren von Objekten, die ich zurück von einem Spring MVC-controller (ich bin mit @RestController mit Feder 4.1.6). Ich musste
com.fasterxml.jackson.annotation.JsonIgnore
stattorg.codehaus.jackson.annotate.JsonIgnore
da es sonst einfach nichts getan.InformationsquelleAutor der Antwort Alex Beardsley
InformationsquelleAutor der Antwort Musa