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
Linda Hamiltonoriginal
2025-01-18 16:16:09359parcourir

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>

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!

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