|
|
Publié sur 30/05/2018 16:50:17
|
|
|
|

Newtonsoft.JsonComme vous le savez probablement, les outils de sérialisation et de désérialisation JSON sont couramment utilisés
DataContractAttributeSpécifie ce type pour définir ou implémenter un contrat de données pouvant être sérialisé par un sérialiseur tel que DataContractSerializer. Pour rendre un type sérialisable, l’auteur du type doit définir un contrat de données pour son type.
rencontré un problème difficile,La classe parente possède la caractéristique [DataContract], et la classe enfant hérite de la classe parente, et tous les attributs de la sous-classe doivent être sérialisés et désérialisés avec l’attribut [DataMember]Puisque la classe mère est la DLL encapsulée de quelqu’un d’autre, la fonctionnalité [DataContract] de la classe parente ne peut pas être supprimée !
Le test est le suivant : la classe Test1 possède la fonctionnalité [DataContract], si l’attribut n’ajoute pas la caractéristique [DataMember], cela provoquera l’échec de la sérialisation et de la désérialisation, comme montré dans la figure ci-dessous :
Nous avons annoté la fonctionnalité [DataContract] de la classe Test1 et constaté qu’elle peut être sérialisée et désérialisée normalement, comme suit :
Existe-t-il une utilisation avancée de Newtonsoft.Json qui pourrait ignorer cette fonctionnalité ? La réponse est oui !
Utilisez simplement la propriété OptOut de Json.Net. Il aura priorité sur le DataContract.
// Résumé : Tous les membres publics sont sérialisés par défaut. Les membres peuvent être exclus en utilisant Newtonsoft.Json.JsonIgnoreAttribute ou System.NonSerializedAttribute. C’est le schéma de sérialisation par défaut des membres. OptOut = 0, // Résumé : Seuls les membres identifiés Newtonsoft.Json.JsonPropertyAttribute ou System.Runtime.Serialization.DataMemberAttribute est sérialisée. Ce mode de sérialisation des membres peut également être défini par balisage classe avec System.Runtime.Serialization.DataContractAttribute. OptIn = 1, // Résumé : Tous les champs publics et privés sont sérialisés. Les membres peuvent être exclus en utilisant Newtonsoft.Json.JsonIgnoreAttribute ou System.NonSerializedAttribute. Ce schéma de sérialisation des membres est également correct Définissez cela en taguant la classe avec System.SerializableAttribute et en définissant l’IgnoreSerializableAttribute Régler Newtonsoft.Json.Serialization.DefaultContractResolver sur false. Champs = 2
Code de test :
|
Précédent:Surveiller les domaines d’applicationProchain:. Le composant de cartographie d’objets OOM le plus rapide de .NET, Tiny Mapper, en pratique de projet
|