Désérialisation JSON.NET et propriétés d'interface : une solution pratique
La désérialisation des données JSON en objets C# à l'aide de JSON.NET peut présenter des difficultés lors du traitement des propriétés des types d'interface. Une erreur courante se produit : JSON.NET ne peut pas instancier directement les interfaces.
La solution réside dans l'exploitation de paramètres de classe concrets au sein du constructeur de votre classe. Cela guide JSON.NET vers les classes concrètes correctes lors de la désérialisation.
Voici un exemple :
<code class="language-csharp">public class Visit : IVisit { // Constructor crucial for JSON.NET to identify concrete types for deserialization. public Visit(MyLocation location, Guest guest) { Location = location; Guest = guest; } public long VisitId { get; set; } public ILocation Location { get; set; } public DateTime VisitDate { get; set; } public IGuest Guest { get; set; } }</code>
En incluant MyLocation
et Guest
(classes concrètes implémentant ILocation
et IGuest
respectivement) dans le constructeur, JSON.NET peut mapper avec succès les données JSON aux types appropriés, surmontant ainsi le problème d'instanciation de l'interface. Cette approche permet de conserver la flexibilité des interfaces tout en assurant une désérialisation fluide.
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!