Ignorer les valeurs d'énumération inconnues lors de la désérialisation JSON
Problème :
Désérialisation JSON avec Json. net peut lever des exceptions lorsqu'il rencontre des valeurs d'énumération inconnues dans les données JSON. Cela se produit lorsqu'une énumération est créée sur la base de la documentation actuelle, mais que l'API tierce ajoute ultérieurement de nouvelles valeurs d'énumération.
Solution : JsonConverter personnalisé
Pour résoudre ce problème , un JsonConverter personnalisé peut être utilisé. Voici comment cela fonctionne :
Implémentation du code :
class TolerantEnumConverter : JsonConverter { ... (Implementation from the provided answer) }
Utilisation :
[JsonConverter(typeof(TolerantEnumConverter))] enum Status { ... (Enum values) }
Exemple de démonstration :
string json = @" { ... (JSON data with valid and invalid enum values) }"; Foo foo = JsonConvert.DeserializeObject<Foo>(json); foreach (PropertyInfo prop in typeof(Foo).GetProperties()) { object val = prop.GetValue(foo, null); Console.WriteLine(prop.Name + ": " + (val == null ? "(null)" : val.ToString())); }
Sortie :La sortie de la console montre comment TolerantEnumConverter gère les valeurs d'énumération inconnues, y compris la définition des valeurs sur "(null)", "Unknown" , ou en utilisant la première valeur de l'énumération.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!