Implémentez JSONConverrter personnalisé
Considérons un exemple, où vous avez une personne de classe de base et deux employés et artistes dérivés. Vous avez une liste d'objets de personne qui doivent être sérialisés en tant que JSON. Cependant, vous souhaitez éviter d'utiliser TynEnameHandling. C'est là que le JSONConverter personnalisé peut jouer un rôle.
Pour cette raison, nous devons définir un convertisseur personnalisé PersonConverter, qui élargit le JSONCreationverter
. Dans la méthode de création du convertisseur, nous pouvons analyser l'objet JSON pour déterminer le type dérivé correct en fonction de l'existence de champs spécifiques.
<code class="language-c#">public class PersonConverter : JsonCreationConverter<Person> { protected override Person Create(Type objectType, JObject jObject) { if (FieldExists("Skill", jObject)) { return new Artist(); } else if (FieldExists("Department", jObject)) { return new Employee(); } else { return new Person(); } } private bool FieldExists(string fieldName, JObject jObject) { return jObject[fieldName] != null; } }</code>
, vous pouvez utiliser un convertisseur personnalisé:
<code class="language-c#">string json = "[...]"; List<Person> persons = JsonConvert.DeserializeObject<List<Person>>(json, new PersonConverter());</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!