Heim > Backend-Entwicklung > C++ > Wie kann ich beim Deserialisieren von JSON mit unbekannten Enum-Werten umgehen?

Wie kann ich beim Deserialisieren von JSON mit unbekannten Enum-Werten umgehen?

Barbara Streisand
Freigeben: 2024-12-31 10:16:14
Original
160 Leute haben es durchsucht

How Can I Handle Unknown Enum Values When Deserializing JSON?

JSON mit unbekannten Enum-Werten deserialisieren

Beim Parsen von JSON-Daten ist es wichtig, mit Szenarios umzugehen, in denen die bereitgestellten Enum-Werte nicht mit den in Ihrer Codebasis definierten übereinstimmen. Dies tritt häufig auf, wenn APIs von Drittanbietern im Laufe der Zeit neue Enum-Werte einführen.

Lösung: Benutzerdefinierter JsonConverter

Um dieses Problem zu beheben, können Sie einen benutzerdefinierten JsonConverter erstellen:

class TolerantEnumConverter : JsonConverter
{
    // ... Implementation ...
}
Nach dem Login kopieren

Dieser Konverter vereinfacht den Deserialisierungsprozess wie folgt Logik:

  • Wenn der JSON-Wert mit einem vorhandenen Enumerationswert übereinstimmt (entweder als Zeichenfolge oder Ganzzahl), wird dieser Wert zugewiesen.
  • Für nullfähige Enumerationen wird Null zurückgegeben, wenn der Wert fehlt.
  • Wenn die Aufzählung einen „Unbekannten“ Wert enthält, wird dieser Wert festgelegt.
  • Andernfalls wird er verwendet den ersten Enum-Wert.

Beispielverwendung:

[JsonConverter(typeof(TolerantEnumConverter))]
enum Status { Ready, Set, Go }

string json = @"{ ""status"": ""SomethingElse"" }";

var status = JsonConvert.DeserializeObject<Status>(json); // Returns "Ready"
Nach dem Login kopieren

Nullable Enums und „Unbekannte“ Werte:

Um nullfähige Aufzählungen mit unbekannten Werten zu verarbeiten, können Sie Ihrer Aufzählungsdefinition einen „Unbekannten“ Wert hinzufügen. Zum Beispiel:

[JsonConverter(typeof(TolerantEnumConverter))]
enum Color { Red, Yellow, Green, Unknown = 99 }

string colorJson = @"{ ""color"": ""Purple"" }";

var color = JsonConvert.DeserializeObject<Color?>(colorJson); // Returns null
Nach dem Login kopieren

Fazit:

Durch die Verwendung des hier vorgestellten benutzerdefinierten JsonConverters können Sie sicherstellen, dass die JSON-Deserialisierung reibungslos verläuft, selbst wenn sich die Enum-Werte im Laufe der Zeit ändern. Fehler verhindern und Datenintegrität wahren.

Das obige ist der detaillierte Inhalt vonWie kann ich beim Deserialisieren von JSON mit unbekannten Enum-Werten umgehen?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage