Maison >développement back-end >C++ >Comment désérialiser JSON avec les propriétés d'interface dans JSON.NET ?
Casting d'interfaces pour la désérialisation dans JSON.NET
Lorsque vous travaillez avec JSON.NET pour la désérialisation, un problème courant survient lorsqu'il s'agit de classes qui contiennent des propriétés au niveau de l’interface. L'erreur "Impossible de créer une instance de type IThingy. Le type est une interface ou une classe abstraite et ne peut pas être instancié" indique que JSON.NET est incapable de désérialiser une interface.
Pour résoudre ce problème, utilisez la solution proposée par @SamualDavis dans un fil de discussion similaire :
Inclure les classes concrètes en tant que constructeur Paramètres :
Lors de la déclaration de la classe qui possède des propriétés d'interface, incluez les classes concrètes comme paramètres de son constructeur. De cette façon, JSON.NET peut identifier les classes spécifiques à utiliser lors de la désérialisation.
Exemple de constructeur :
public class Visit : IVisit { /// <summary> /// This constructor is required for the JSON deserializer to be able /// to identify concrete classes to use when deserializing the interface properties. /// </summary> 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; } }
En suivant cette approche, JSON.NET sera capable de désérialiser avec succès les objets JSON dans vos objets C#, même s'ils contiennent propriétés au niveau de l'interface.
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!