Maison >développement back-end >C++ >Comment gérer les valeurs Enum inconnues lors de la désérialisation JSON avec Json.net ?
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) }Appliquer le [JsonConverter( typeof(TolerantEnumConverter))] attribut au type enum pour utiliser le convertisseur personnalisé pendant désérialisation :
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())); }L'extrait de code suivant montre l'utilisation de TolerantEnumConverter avec différentes valeurs d'énumération et JSON entrées :
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!