Maison > développement back-end > C++ > Comment désérialiser les données JSON en une classe C # sans constructeur par défaut?

Comment désérialiser les données JSON en une classe C # sans constructeur par défaut?

Linda Hamilton
Libérer: 2025-01-29 16:32:10
original
814 Les gens l'ont consulté

How to Deserialize JSON Data into a C# Class Without a Default Constructor?

json.net: pas besoin de par défaut pour construire la fonction de la fonction de la fonction

Le constructeur par défaut de JSON.net peut séquencement de séquences les données JSON dans l'objet. Cependant, si votre classe doit être rétablie, le constructeur par défaut peut entraver le processus de traitement. Ce problème se produit lorsque les données JSON sont cohérentes avec les paramètres du constructeur de charge lourde, mais il y a un constructeur par défaut.

Solution: couvrez le comportement par défaut

Afin d'empêcher JSON.net d'utiliser le constructeur par défaut, il y a deux façons:

<.> 1. Utilisez [JSONConstructor] Fonctionnalités:

json.net vous permet de spécifier le constructeur de rétrofiance préféré avec la fonction [JSONConstructor]. En utilisant le constructeur requis pour cette fonctionnalité, vous pouvez forcer JSON.net à l'utiliser, même si le constructeur par défaut est défini. Gardez à l'esprit que le paramètre du constructeur doit être cohérent avec l'attribut d'objet JSON (ignorer les minuscules). <.> 2. Créez un jsonconverter personnalisé:

ou, si vous ne pouvez pas modifier la classe, vous pouvez créer un JSONConverrer personnalisé pour contrôler le processus de traitement. La méthode Readjson du convertisseur peut être personnalisée afin d'utiliser l'objet de construction du constructeur non-Default et de remplir tout autre attribution en fonction des données JSON.

Exemple:

Considérant les classes suivantes avec des fonctions constructives:

Pour utiliser la méthode de fonctionnalité [JSONConstructor], veuillez utiliser le constructeur préféré de cette décoration de fonctionnalité, comme indiqué ci-dessous:

En revanche, pour la méthode JSONConverrer personnalisée, vous pouvez définir le convertisseur illustré ci-dessous:

<code class="language-csharp">public class Result
{
    public Result() { }

    [JsonConstructor]
    public Result(int? code, string format, Dictionary<string, string> details = null)
    {
        Code = code ?? ERROR_CODE;
        Format = format;

        if (details == null)
            Details = new Dictionary<string, string>();
        else
            Details = details;
    }
}</code>
Copier après la connexion

Dans la méthode Readjson de ce convertisseur, vous pouvez utiliser le constructeur non-default pour instancier l'objet de résultat et remplir tout autre attribution en fonction des données JSON.

<code class="language-csharp">[JsonConstructor]
public Result(int? code, string format, Dictionary<string, string> details = null)
{
    ...
}</code>
Copier après la connexion
En utilisant ces technologies, vous pouvez couvrir le comportement par défaut de JSON.net et activer la dérivée de l'utilisation du constructeur de charge lourde, même s'il existe une fonction de constructeur par défaut.

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