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 ... }
Dieser Konverter vereinfacht den Deserialisierungsprozess wie folgt Logik:
Beispielverwendung:
[JsonConverter(typeof(TolerantEnumConverter))] enum Status { Ready, Set, Go } string json = @"{ ""status"": ""SomethingElse"" }"; var status = JsonConvert.DeserializeObject<Status>(json); // Returns "Ready"
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
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!