Heim >Backend-Entwicklung >C++ >Wie kann ein benutzerdefinierter JsonConverter mit unerwarteten Enum-Werten bei der JSON-Deserialisierung umgehen?

Wie kann ein benutzerdefinierter JsonConverter mit unerwarteten Enum-Werten bei der JSON-Deserialisierung umgehen?

DDD
DDDOriginal
2025-01-03 10:39:44347Durchsuche

How Can a Custom JsonConverter Handle Unexpected Enum Values in JSON Deserialization?

Überwindung unerwarteter JSON-Enum-Werte mit benutzerdefinierter Behandlung

Wenn Sie auf JSON-Daten stoßen, die Enum-Werte enthalten, die Ihre aktuellen Enum-Definitionen überschreiten, kann es zu Problemen kommen Ausnahmen während der Deserialisierung mit Json.net. Um dieses Problem zu beheben, ist die Erstellung eines benutzerdefinierten JsonConverters eine effektive Lösung.

TolerantEnumConverter: Ein flexibler Deserialisierungsansatz

Der TolerantEnumConverter ist ein benutzerdefinierter JsonConverter, der Flexibilität bei der Handhabung nicht erkannter Daten bietet Aufzählungswerte. Es folgt einem Entscheidungsbaum, um die geeignete Antwort zu bestimmen:

  • Wenn im JSON ein passender Enum-Wert (als Zeichenfolge oder Ganzzahl) vorhanden ist, wird dieser verwendet.
  • Für nullable Bei Aufzählungen wird ein Nullwert zurückgegeben, wenn keine Übereinstimmung gefunden wird.
  • Wenn die Aufzählung einen „Unbekannten“ Wert enthält, wird er als Sammelbegriff für verwendet nicht erkannte Werte.
  • Wenn keiner der oben genannten Punkte zutrifft, wird der erste Wert der Aufzählung verwendet.

Vorteile und Implementierung

Verwendung Der TolerantEnumConverter bietet mehrere Vorteile:

  • Nahtlos Deserialisierung für JSON-Enums, unabhängig von nicht erkannten Werten.
  • Anpassbare Handhabung basierend auf Ihren spezifischen Anforderungen.
  • Kompatibilität sowohl mit nullable- als auch nicht-nullable-enums.

Zu Wenn Sie den TolerantEnumConverter implementieren, fügen Sie ihn einfach als [JsonConverter]-Attribut zu Ihren Enum-Typen hinzu. Der in der Antwort bereitgestellte Code kann als Ausgangspunkt verwendet und an die Anforderungen Ihres Projekts angepasst werden.

Demonstration und Effekte

Die bereitgestellte Demo zeigt, wie der TolerantEnumConverter funktioniert verschiedene JSON-Enum-Werte, einschließlich gültiger, ungültiger und Nullwerte. Die Ergebnisse werden sowohl für NULL-fähige als auch für Nicht-NULL-fähige Enumerationen angezeigt. Dies zeigt die Fähigkeit des Konverters, Ausnahmen zu verhindern und gleichzeitig flexible Deserialisierungsergebnisse bereitzustellen.

Das obige ist der detaillierte Inhalt vonWie kann ein benutzerdefinierter JsonConverter mit unerwarteten Enum-Werten bei der JSON-Deserialisierung umgehen?. 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