Heim >Java >javaLernprogramm >Wie kann ich @JsonIgnore verwenden, um die Serialisierung zu steuern, ohne die Deserialisierung zu blockieren?

Wie kann ich @JsonIgnore verwenden, um die Serialisierung zu steuern, ohne die Deserialisierung zu blockieren?

Barbara Streisand
Barbara StreisandOriginal
2024-11-26 03:15:171010Durchsuche

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

JsonIgnore-Annotation für kontrollierte Serialisierung und Deserialisierung

Beim Umgang mit sensiblen Daten in Benutzerobjekten ist es wichtig, deren Offenlegung während der Serialisierung zu verhindern. Die Annotation @JsonIgnore dient diesem Zweck, kann jedoch versehentlich die Deserialisierung blockieren.

Deserialisierungsproblem mit @JsonIgnore

In diesem Szenario verhindert die Annotation @JsonIgnore für die Eigenschaft „Passwort“. seine Serialisierung an den Client. Es verhindert jedoch auch, dass die Eigenschaft mit dem richtigen Passwort deserialisiert wird, was Anmeldungen zu einer Herausforderung macht.

Lösung für selektive Ignoranz

Je nach Jackson-Version gibt es zwei Ansätze verwendet werden:

Jackson-Versionen vor 1.9:

  • Fügen Sie @JsonIgnore nur zur Getter-Methode hinzu.
  • Fügen Sie eine spezifische @JsonProperty-Annotation mit dem JSON-Feldnamen zur Passwort-Setter-Methode hinzu.

Jackson-Versionen 1.9 und oben:

  • Fügen Sie @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) zum Passwortfeld in der Klasse hinzu.

Beispielcode:

In Java:

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

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

Dieser Ansatz ermöglicht @JsonIgnore darf nur während der Serialisierung angewendet werden, um eine korrekte Deserialisierung des Kennworts zu ermöglichen und es gleichzeitig vor unbeabsichtigter Offenlegung zu schützen.

Das obige ist der detaillierte Inhalt vonWie kann ich @JsonIgnore verwenden, um die Serialisierung zu steuern, ohne die Deserialisierung zu blockieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn