Ignorer les valeurs d'énumération inconnues lors de la désérialisation JSON
Lorsque vous désérialisez des données JSON dans une énumération, il est possible de rencontrer des situations où la propriété JSON contient des valeurs qui ne correspondent à aucune valeur d'énumération existante. Par défaut, cela peut provoquer des erreurs.
TolerantEnumConverter à la rescousse
Pour gérer cela avec élégance, vous pouvez utiliser un JsonConverter personnalisé appelé TolerantEnumConverter. Ce convertisseur offre une approche flexible pour gérer les valeurs d'énumération inconnues en définissant un ensemble de règles :
Détails d'implémentation
Le TolerantEnumConverter gère à la fois les valeurs de chaîne et les valeurs entières en JSON. Il vérifie les correspondances en fonction de comparaisons de chaînes insensibles à la casse ou de la présence dans l'ensemble de valeurs d'énumération.
Exemple d'utilisation
Pour utiliser TolerantEnumConverter, annotez vos propriétés d'énumération avec l'attribut [JsonConverter(typeof(TolerantEnumConverter))] . Voici un exemple :
[JsonConverter(typeof(TolerantEnumConverter))] enum Status { Ready = 1, Set = 2, Go = 3, }
Application de démonstration
L'application de démonstration suivante montre comment utiliser TolerantEnumConverter pour gérer à la fois les valeurs non nullables et nullables. enums :
// Sample JSON data string json = @" { ""NonNullableStatusWithValidStringValue"" : ""Set"", ""NonNullableStatusWithInvalidStringValue"" : ""Blah"", ""NullableStatusWithValidStringValue"" : ""Go"", ""NullableStatusWithInvalidStringValue"" : ""Blah"", }"; // Deserialize JSON data into Foo object Foo foo = JsonConvert.DeserializeObject<Foo>(json, new JsonSerializerSettings { Converters = { new TolerantEnumConverter() } }); // Output the deserialized values foreach (PropertyInfo prop in typeof(Foo).GetProperties()) { Console.WriteLine(prop.Name + ": " + (prop.GetValue(foo) ?? "(null)")); }
Sortie :
NonNullableStatusWithValidStringValue: Set NonNullableStatusWithInvalidStringValue: Ready NullableStatusWithValidStringValue: Go NullableStatusWithInvalidStringValue: (null)
Conclusion
Le TolerantEnumConverter fournit un moyen pratique de désérialiser les données JSON en énumérations sans rencontrer d'erreurs pour les valeurs inconnues. Il offre un comportement personnalisable pour répondre à vos besoins spécifiques.
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!