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

Comment puis-je désérialiser les propriétés au niveau de l'interface JSON dans JSON.NET ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-18 16:06:11933parcourir

How Can I Deserialize JSON Interface-Level Properties in JSON.NET?

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!

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