Maison >développement back-end >C++ >Comment un JsonConverter personnalisé peut-il gérer les valeurs d'énumération inattendues dans la désérialisation JSON ?

Comment un JsonConverter personnalisé peut-il gérer les valeurs d'énumération inattendues dans la désérialisation JSON ?

DDD
DDDoriginal
2025-01-03 10:39:44353parcourir

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

Surmonter les valeurs d'énumération JSON inattendues avec une gestion personnalisée

Lorsque vous rencontrez des données JSON contenant des valeurs d'énumération qui dépassent vos définitions d'énumération actuelles, il est possible de faire l'expérience exceptions lors de la désérialisation à l'aide de Json.net. Pour résoudre ce problème, la création d'un JsonConverter personnalisé est une solution efficace.

TolerantEnumConverter : une approche de désérialisation flexible

Le TolerantEnumConverter est un JsonConverter personnalisé qui offre une flexibilité dans la gestion des fichiers non reconnus. énumérer les valeurs. Il suit un arbre de décision pour déterminer la réponse appropriée :

  • Si une valeur d'énumération correspondante (par chaîne ou entier) existe dans le JSON, elle est utilisée.
  • Pour les valeurs nullables énumérations, une valeur nulle est renvoyée si aucune correspondance n'est trouvée.
  • Si l'énumération contient une valeur "Inconnue", elle est utilisée comme fourre-tout pour valeurs non reconnues.
  • Si aucun des éléments ci-dessus ne s'applique, la première valeur de l'énumération est utilisée.

Avantages et mise en œuvre

Utilisation le TolerantEnumConverter offre plusieurs avantages :

  • Désérialisation transparente pour Énumérations JSON, quelles que soient les valeurs non reconnues.
  • Gestion personnalisable en fonction de vos besoins spécifiques.
  • Compatibilité avec les énumérations nullables et non nullables.

Pour implémenter les TolerantEnumConverter, ajoutez-le simplement en tant qu'attribut [JsonConverter] à vos types d'énumération. Le code fourni dans la réponse peut être utilisé comme point de départ et adapté pour répondre aux besoins de votre projet.

Démonstration et effets

La démo fournie montre comment TolerantEnumConverter gère diverses valeurs d'énumération JSON, y compris des valeurs valides, invalides et nulles. Les résultats sont affichés pour les énumérations nullables et non nullables, démontrant la capacité du convertisseur à empêcher les exceptions tout en fournissant des résultats de désérialisation flexibles.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn