json.net: désérialisation des objets avec des constructeurs non défauts
json.net utilise généralement le constructeur par défaut pour la désérialisation. Cependant, si votre classe dispose d'un constructeur non défaut nécessaire pour d'autres raisons, vous pouvez toujours utiliser JSON.net pour désérialiser en utilisant votre constructeur préféré.
en utilisant l'attribut [JsonConstructor]
La solution la plus simple consiste à marquer votre constructeur souhaité avec l'attribut [JsonConstructor]
. Cela indique à JSON.net d'utiliser ce constructeur pendant la désérialisation. Assurez-vous que les noms de paramètres du constructeur correspondent aux noms de propriétés JSON (insensible à la casse).
<code class="language-csharp">[JsonConstructor] public Result(int? code, string format, Dictionary<string, string> details = null) { // ... }</code>
Création d'une personnalité JsonConverter
Si vous ne pouvez pas modifier directement le code source, vous pouvez créer une personnalité JsonConverter
.
<code class="language-csharp">class ResultConverter : JsonConverter { // ... implementation details ... }</code>
Ensuite, ajoutez le convertisseur à vos paramètres de sérialiseur:
<code class="language-csharp">JsonSerializerSettings settings = new JsonSerializerSettings(); settings.Converters.Add(new ResultConverter()); Result result = JsonConvert.DeserializeObject<Result>(jsonText, settings);</code>
Cette approche fournit plus de contrôle sur le processus de désérialisation sans modifier la définition de classe d'origine. Le JsonConverter
permet la création d'objets flexibles et la population imminente.
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!