2017-05-07 3 views
0

Während an einem Projekt arbeiten, machte ich den Fehler, einen @JsonIgnore auf dem Setter anstatt die Getter-Eigenschaft setzen, wie unten@JsonIgnore Verhalten

private Set<Book> books; 


public Set<Book> getBooks() { 
    return books; 
} 

@JsonIgnore 
public void setBooks(Set<Book> books) { 
    this.books = books; 
} 

Dies sollte in meinem getbooks api Anruf geführt habe adaequat (vom Postboten anrufen). Allerdings merke ich, dass @JsonIgnore Serialisierung verhindert, auch wenn der @ JsonIgnore auf den Setter gesetzt ist.

Funktioniert normalerweise @JsonIgnore? Ich dachte, @JsonIgnore nur auf dem Getter setzen verhindert Serialisierung. Hier verhindert es die Serialisierung, selbst wenn ich es auf den Getter oder den Setter setze.

Jeder Ratschlag geschätzt. Vielen Dank.

+0

haben Sie diese [post] (http://www.davismol.net/2015/03/10/jackson-json-difference-between-jsonignore-and-jsonignoreproperties-annotations/) auf '@JsonIgnore verwiesen ' –

+0

Danke Ranjith. Ich habe das gerade vor dem Posten gelesen, aber die Nachricht war nuanciert und wahrscheinlich nicht in meinem dicken Schädel zu sehen. Das Nachlesen der Antwort von RC unten macht alles klar. Vielen Dank. – HopeKing

Antwort

2

Vom javadoc (Schwerpunkt liegt du):

Zusätzlich beginnend mit Jackson 1,9, wenn dies die einzigen Anmerkung mit dem Eigentum verbunden ist, wird es auch dazu führen, die ganze Eigenschaft verursacht ignoriert werden: das heißt, wenn Setter diese Annotation hat und Getter keine Annotationen hat, wird Getter auch effektiv ignoriert. Es ist immer noch möglich, dass verschiedene Accessoren unterschiedliche Annotationen verwenden; Wenn also nur "Getter" ignoriert werden soll, benötigen andere Accessoren (Setter oder Feld) eine explizite Annotation, um ein Ignorieren zu verhindern (normalerweise JsonProperty).

Verwandte Themen