Heim > Java > javaLernprogramm > Hauptteil

Wie kann ich Felder während der JSON-Serialisierung selektiv ignorieren und gleichzeitig die Deserialisierung zulassen?

DDD
Freigeben: 2024-11-25 00:07:21
Original
644 Leute haben es durchsucht

How Can I Selectively Ignore Fields During JSON Serialization While Still Allowing Deserialization?

Selektives @JsonIgnore für die Serialisierung

Bei der Verwendung von JSON-Serialisierungs-/Deserialisierungs-Frameworks kann es nützlich sein, bestimmte Felder für bestimmte Vorgänge selektiv zu ignorieren. Im Fall von Passwörtern ist es oft wünschenswert, sie von der serialisierten Ausgabe auszuschließen, aber dennoch ihre Deserialisierung zuzulassen.

Bereitgestellter Kontext

Das Benutzerobjekt, das serialisiert wird und deserialisiert hat eine „Passwort“-Eigenschaft. @JsonIgnore wurde auf diese Eigenschaft angewendet, um zu verhindern, dass sie in serialisierten JSON-Antworten enthalten ist. Dies blockiert jedoch auch die Deserialisierung eines Passworts, wodurch eine Benutzeranmeldung unmöglich wird.

Lösung

Spring JSONView, das Jackson intern verwendet, bietet verschiedene Methoden zur Steuerung der Serialisierung/ Deserialisierung. Für dieses spezielle Szenario werden zwei Ansätze empfohlen:

Jackson-Versionen < 1.9

  • Getter-Methode mit Anmerkungen versehen: @JsonIgnore zur Passwort-Getter-Methode hinzufügen. Dies kann verhindern, dass das Passwort serialisiert wird, ohne die Deserialisierung zu beeinträchtigen.

Jackson Versions >= 1.9

  • ReadWrite-Anmerkungsargumente: Verwenden Sie JsonProperty mit Zugriffsargumenten, um Lese- oder Schreibzugriff anzugeben. Zum Beispiel:
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
private String password;
Nach dem Login kopieren
  • Setter-Annotation: Kommentieren Sie die Setter-Methode für die Passworteigenschaft mit @JsonProperty, ohne ein Zugriffsargument anzugeben. Dies würde darauf hinweisen, dass die Eigenschaft schreibgeschützt ist.

Zusätzliche Hinweise

Diese Lösung zielt speziell auf den selektiven Ausschluss für die Serialisierung ab und ermöglicht gleichzeitig die Deserialisierung. Für andere Szenarien, in denen eine Deserialisierungsmaskierung gewünscht ist, sind möglicherweise alternative Ansätze erforderlich.

Das obige ist der detaillierte Inhalt vonWie kann ich Felder während der JSON-Serialisierung selektiv ignorieren und gleichzeitig die Deserialisierung zulassen?. 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