2012-02-15 2 views
8

ジャンクションを1.7.xから1.9.xに更新したJackson @JsonIgnoreはセマンティクスを変更しましたか?

クライアント側から設定されていないメソッドのsetterメソッドに@JsonIgnoreを注釈するために使用します。たとえば:オブジェクトの所有者(認証主体から設定する必要があります)など

この注釈のセマンティクスは変更されているようですが、それは可能ですか?現在、このフィールドは、設定されているときだけでなく、すべてのケースでjsonignoredされています。

その場合は? 1.9ではSETを無視する以外の方法がありますか?

ありがとうございました! r。

+0

フィールドまたはゲッターに@JsonPropertyアノテーションを追加していますか? –

+0

私はそれをセッターに追加しています。これは、1.7.x – Rafael

答えて

8

私は、javadocでこの問題を発見して明示的に言及したと思います。 (ジャクソンの文書は簡単ではありません)。また

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

+4

で非直列化中に設定されるのを防ぎます。これは1.9の大きな変化でした(2.0まで待つべきだったかもしれません)。あなたが望むものを達成するためには、getterに明示的な '@JsonProperty'を追加する必要があります - デフォルトでは、関連するアノテーションが1つしか見つからない場合、"フル "プロパティのすべての部分に適用されます。 – StaxMan

関連する問題