|
|
Publicado en 30/5/2018 16:50:17
|
|
|
|

Newtonsoft.JsonComo probablemente sepas, las herramientas de serialización y deserialización JSON se usan comúnmente
DataContractAttributeEspecifica ese tipo para definir o implementar un contrato de datos que puede ser serializado por un serializador como DataContractSerializer. Para que un tipo sea serializable, el autor del tipo debe definir un contrato de datos para su tipo.
me encontré con un problema difícil,La clase madre tiene la característica [DataContract], y la clase hija hereda la clase madre, y todos los atributos de la subclase deben ser serializados y deserializados con el atributo [DataMember]Dado que la clase madre es una DLL encapsulada de otra persona, la función [DataContract] de la clase madre no puede ser eliminada.
La prueba es la siguiente: la clase Test1 tiene la característica [DataContract], si el atributo no añade la característica [DataMember], provocará fallos en la serialización y deserialización, como se muestra en la figura siguiente:
Anotábamos la característica [DataContract] de la clase Test1 y comprobamos que puede ser serializada y deserializada normalmente, de la siguiente manera:
¿Existe algún uso avanzado de Newtonsoft.Json que pueda ignorar esta función? ¡La respuesta es sí!
Simplemente usa la propiedad de OptOut de Json.Net. Tendrá prioridad sobre el DataContract.
// Resumen: Todos los miembros públicos se serializan por defecto. Los miembros pueden ser excluidos usando Newtonsoft.Json.JsonIgnoreAttribute o AtributoSistema.NonSerialized. Este es el patrón predeterminado de serialización de miembros. OptOut = 0, // Resumen: Solo los miembros etiquetados como Newtonsoft.Json.JsonPropertyAttribute o System.Runtime.Serialization.DataMemberAttribute es serializada. Este modo de serialización de miembros también puede establecerse mediante etiquetado con System.Runtime.Serialization.DataContractAttribute. OptIn = 1, // Resumen: Todos los campos públicos y privados están serializados. Los miembros pueden ser excluidos usando Newtonsoft.Json.JsonIgnoreAttribute o AtributoSistema.NonSerialized. Este patrón de serialización de miembros también está bien Configúralo etiquetando la clase con System.SerializableAttribute y configurando el IgnoreSerializableAttribute Configura Newtonsoft.Json.Serialization.DefaultContractResolver en false. Campos = 2
Código de prueba:
|
Anterior:MonitorDomainsAppDomainsPróximo:. El componente de mapeo de objetos OOM más rápido de .NET, Tiny Mapper, en la práctica del proyecto
|