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>
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>
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!