1. ホーム
  2. java

[解決済み] シリアライズ時のみ@JsonIgnoreを使用し、デシリアライズ時には使用しない。

2022-03-24 09:11:56

質問

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

を取得するには、どうすればよいのでしょうか? @JsonIgnore をシリアル化には適用し、デシリアライズには適用しないのでしょうか?私はSpring JSONViewを使用しています。 ObjectMapper .

試してみたこと

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

どのように解決するのですか?

正確な方法は、使用しているJacksonのバージョンに依存します。これは、バージョン 1.9 それ以前は、この操作は @JsonIgnore をゲッターに追加します。

どれを試したんだ。

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

こうしてください。 また を追加し、特定の @JsonProperty アノテーションを使用して、JSON "password" フィールド名をオブジェクトのパスワードのセッターメソッドに追加します。

最近のJacksonのバージョンでは READ_ONLYWRITE_ONLY のアノテーション引数です。 JsonProperty . だから、次のようなこともできる。

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

Docsはこちら こちら .