Maison > développement back-end > C++ > Comment puis-je désérialiser JSON avec les propriétés d'interface dans JSON.NET ?

Comment puis-je désérialiser JSON avec les propriétés d'interface dans JSON.NET ?

Linda Hamilton
Libérer: 2025-01-18 16:16:09
original
358 Les gens l'ont consulté

How Can I Deserialize JSON with Interface Properties in 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 :

  • Le processus de désérialisation par défaut de JSON.NET a du mal avec les propriétés d'interface car il ne peut pas créer directement des instances d'interfaces.

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal