Maison >développement back-end >C++ >Comment puis-je désérialiser JSON avec les propriétés d'interface dans JSON.NET ?
Désérialisation JSON.NET avec propriétés d'interface : un guide pratique
La désérialisation d'objets JSON contenant des propriétés d'interface présente souvent un défi dans le développement .NET. L'erreur courante rencontrée est l'incapacité d'instancier directement une interface. Ce tutoriel résout ce problème en utilisant JSON.NET, une bibliothèque largement utilisée pour le traitement JSON.
Le défi :
La solution : l'injection de constructeur
La clé d'une désérialisation réussie réside dans l'emploi de constructeurs qui acceptent des instances de classe concrètes pour les propriétés d'interface. Cela permet à JSON.NET d'identifier le type concret approprié pendant le processus de désérialisation. Comme l'a noté @SamualDavis, cette approche est très efficace.
Voici un exemple illustratif :
<code class="language-csharp">public class Visit : IVisit { // Constructor for JSON.NET to instantiate concrete types 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 définissant un constructeur qui prend des objets MyLocation
et Guest
concrets, JSON.NET peut mapper correctement les données JSON aux classes concrètes appropriées, résolvant ainsi le problème d'instanciation de l'interface. Cette méthode est également bénéfique lors de la création d'objets fictifs pour les tests unitaires, où les interfaces sont souvent préférées aux implémentations concrètes. Cela garantit une désérialisation transparente des données JSON en objets C# utilisables.
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!