Heim > Java > javaLernprogramm > Wie kann ich Felder selektiv von der JSON-Serialisierung ausschließen, ohne die Deserialisierung zu beeinträchtigen?

Wie kann ich Felder selektiv von der JSON-Serialisierung ausschließen, ohne die Deserialisierung zu beeinträchtigen?

DDD
Freigeben: 2024-11-24 13:28:12
Original
581 Leute haben es durchsucht

How Can I Selectively Exclude Fields from JSON Serialization Without Affecting Deserialization?

Selektive Anwendung von @JsonIgnore: Adressierung des reinen Serialisierungsausschlusses

Während des Datenaustauschs mit einem Server kann ein Benutzerobjekt vertrauliche Informationen enthalten, die sollte während der Serialisierung vor Clients verborgen bleiben. Ein häufig verwendeter Ansatz ist die Anwendung der Annotation @JsonIgnore, um sensible Eigenschaften zu verbergen. Dies kann jedoch auch die Deserialisierung beeinträchtigen und in bestimmten Szenarien zu Herausforderungen führen.

Verstehen des Problems

Die Annotation @JsonIgnore für eine Eigenschaft verhindert deren Einbeziehung in die JSON-Serialisierung. Wenn jedoch dieselbe Eigenschaft während der Deserialisierung benötigt wird (z. B. um ein Benutzerkonto zu erstellen), wird der Ausschluss problematisch.

Selektiver Ausschluss mit @JsonIgnore

Zu lösen Für dieses Problem können je nach verwendeter Jackson-Version zwei unterschiedliche Ansätze gewählt werden:

Jackson-Versionen davor 1.9:

  • Verwendung von @JsonIgnore auf dem Getter: Wenn Sie nur die Getter-Methode mit Anmerkungen versehen, kann die Eigenschaft während der Deserialisierung eingeschlossen und während der Serialisierung ausgeschlossen werden.

Jackson-Versionen 1.9 und später:

  • @JsonProperty mit READ_ONLY: Durch Hinzufügen der Annotationsargumente @JsonProperty(access = JsonProperty.Access.READ_ONLY) zum Setter können Sie angeben, dass die Eigentum ist nur beschreibbar und ausgeschlossen während Serialisierung.

Beispiel:

Betrachten Sie ein Benutzerobjekt mit einem Passwortfeld:

@JsonIgnore
private String password;

// Setter with READ_ONLY access (Jackson 1.9 and later)
@JsonProperty(access = JsonProperty.Access.READ_ONLY)
public void setPassword(String password) {
    this.password = password;
}
Nach dem Login kopieren

Hinweis:

  • Durch die Verwendung von READ_ONLY wird sichergestellt, dass das Passwort nur für verwendet wird Deserialisierung.
  • Beide Ansätze wurden verifiziert und funktionieren wie vorgesehen.

Das obige ist der detaillierte Inhalt vonWie kann ich Felder selektiv von der JSON-Serialisierung ausschließen, ohne die Deserialisierung zu beeinträchtigen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage