ホームページ  >  記事  >  Java  >  @JsonIgnore を使用して、逆シリアル化をブロックせずにシリアル化を制御するにはどうすればよいですか?

@JsonIgnore を使用して、逆シリアル化をブロックせずにシリアル化を制御するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-26 03:15:17942ブラウズ

How Can I Use @JsonIgnore to Control Serialization Without Blocking Deserialization?

制御されたシリアル化と逆シリアル化のための JsonIgnore アノテーション

ユーザー オブジェクト内の機密データを扱う場合、シリアル化中にデータが公開されるのを防ぐことが不可欠です。 @JsonIgnore アノテーションはこの目的を果たしますが、誤って逆シリアル化をブロックする可能性があります。

@JsonIgnore による逆シリアル化の問題

このシナリオでは、パスワード プロパティの @JsonIgnore アノテーションにより、逆シリアル化がブロックされます。クライアントにシリアル化します。ただし、プロパティが正しいパスワードで逆シリアル化されることもブロックされるため、サインアップが困難になります。

選択的無知に対するソリューション

Jackson のバージョンに応じて、2 つのアプローチが可能です。使用可能:

以前の Jackson バージョン1.9:

  • ゲッター メソッドのみに @JsonIgnore を追加します。
  • JSON フィールド名を持つ特定の @JsonProperty アノテーションをパスワード セッター メソッドに追加します。

Jackson バージョン 1.9 および上:

  • クラスのパスワード フィールドに @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) を追加します。

サンプル コード:

でJava:

@JsonIgnore(serialize = true, deserialize = false)
private String password;

@JsonProperty("password")
private void setPassword(String password) {
    this.password = password;
}

このアプローチにより、シリアル化中にのみ @JsonIgnore を適用できるようになり、パスワードを意図しない公開から保護しながら正しく逆シリアル化できるようになります。

以上が@JsonIgnore を使用して、逆シリアル化をブロックせずにシリアル化を制御するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。