2017-05-07 10 views
0

これが正常に動作し、私はgetBooks API呼び出し(をもたらしているはずです@JsonIgnore行動

private Set<Book> books; 


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

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

以下のようにプロジェクトに取り組んで、私はセッターではなくゲッタープロパティに@JsonIgnoreを入れてのミスを犯したものの郵便配達員からの呼び出し)。 しかし、@ JsonIgnoreがsetterで設定されていても、@JsonIgnoreがシリアル化を防止することを認識しています。

これは通常@JsonIgnoreの仕組みですか?私はゲッターで@JsonIgnoreを設定するだけでシリアル化ができないと思った。ここではgetterやsetterに置いても直列化ができないようにしています。

アドバイスありがとうございます。ありがとう。 javadocから

+0

「@JsonIgnore」のこの[投稿](http://www.davismol.net/2015/03/10/jackson-json-difference-between-jsonignore-and-jsonignoreproperties-annotations/)を参考にしてください' –

+0

Ranjithに感謝します。私はちょうど投稿する前にそれを読んでいたが、メッセージは微妙で、おそらく私の太い頭蓋骨に登録されていませんでした。下のRCの回答を読んだ後でそれを読んでみると、今はっきりと分かります。ありがとう。 – HopeKing

答えて

2

(強調は私です):また

このプロパティに関連付けられている注釈のみであれば、全体プロパティは無視されることになり、ジャクソン1.9で始まる、それも発生しますが。 つまり、setterにこの注釈があり、getterに注釈がない場合、getterも実質的に無視されます。異なるアクセサで異なる注釈を使用することは可能です。 "getter"だけが無視される場合、他のアクセサ(setterまたはfield)はignool(通常JsonProperty)を防ぐために明示的なアノテーションを必要とします。

関連する問題