シリアル化時にのみ@JsonIgnoreを使用し、デシリアル化時には使用しない 質問する

シリアル化時にのみ@JsonIgnoreを使用し、デシリアル化時には使用しない 質問する

サーバーとの間で送受信されるユーザー オブジェクトがあります。ユーザー オブジェクトを送信するときに、ハッシュされたパスワードをクライアントに送信したくありません。そのため、@JsonIgnoreパスワード プロパティを追加しましたが、これによりパスワードへの逆シリアル化もブロックされ、パスワードを持たないユーザーのサインアップが困難になります。

をシリアル化にのみ適用し、デシリアル化には適用しないようにするにはどうすればよいですか@JsonIgnore? Spring JSONView を使用しているため、 をあまり制御できませんObjectMapper

私が試したこと:

  1. @JsonIgnoreプロパティに追加
  2. @JsonIgnoreゲッターメソッドのみ追加

ベストアンサー1

正確な方法は、使用している Jackson のバージョンによって異なります。これはバージョン1.9@JsonIgnoreあたりで変更されましたが、それより前は、ゲッターに追加することでこれを行うことができました。

試したことのあるもの:

ゲッターメソッドにのみ@JsonIgnoreを追加します

これを実行し、オブジェクトのパスワードのセッター メソッドに JSON「パスワード」フィールド名の特定の注釈も追加します。@JsonProperty

Jackson の最近のバージョンではREAD_ONLY、 およびWRITE_ONLYの注釈引数が追加されましたJsonProperty。そのため、次のようなこともできます。

@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
private String password;

ドキュメントはここ

おすすめ記事