29 votos

¿Cuál es el más flexible de la serialización .NETO de los objetos, sin embargo, fácil de implementar?

Me gustaría para serializar y deserializar objetos sin tener que preocuparse de todo el gráfico de la clase.

La flexibilidad es la clave. Me gustaría ser capaz de serializar cualquier objeto pasa a mí sin completar los atributos necesarios a lo largo de todo el objeto gráfico.

Eso significa que la Serialización Binaria no es una opción, ya que sólo funciona con el otro .RED de Plataformas. Me gustaría también como algo legible por una persona, y por lo tanto descifrable por un programa de gestión y otros los intérpretes.

He encontrado problemas con el DataContract, JSON, XML y Serializadores.

  • La mayoría de estos errores parecen centro alrededor de la Serialización de Listas o Diccionarios (es decir, XML Serializable Diccionario Genérico).
  • "Agregar cualquier tipo no se conoce de forma estática a la lista de tipos conocidos - para ejemplo, mediante el uso de la KnownTypeAttribute atributo o por añadir a la lista de conocidos tipos pasado a DataContractSerializer."

Por favor, base sus respuestas en experiencias reales y no de la teoría o de la lectura de un artículo.

52voto

James Newton-King Puntos 13880

Han considerado que la serialización a JSON en lugar de XML?

Json.NET tiene un muy potente y flexible serializador que no tiene problemas con tablas de hash/diccionarios genéricos y no requiere ningún tipo de atributos particulares. Lo sé porque yo lo escribí :)

Te da montones de control a través de varias opciones en el serializador y permite anular cómo un tipo se serializa mediante la creación de un JsonConverter.

En mi opinión JSON es más legible para los humanos de XML y Json.NET da la opción de escribir bien con formato JSON.

Por último, el proyecto es de código abierto así que usted puede entrar en el código y hacer modificaciones si es necesario.

3voto

Ian Suttle Puntos 2225

Si mal no recuerdo funciona algo como esto con una propiedad:

[XmlArray("Foo")]
[XmlArrayItem("Bar")]
public List<BarClass> FooBars
{ get; set; }

Si usted serializado este obtendrá algo como:

<Foo>
    <Bar />
    <Bar />
</Foo>

Por supuesto, probablemente debería diferir de los expertos. Aquí hay más información de MS: http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlarrayitemattribute.aspx

Déjeme saber si funciona para usted.

2voto

Ian Suttle Puntos 2225

A partir de sus requerimientos suena como la Serialización Xml es el mejor.

Qué tipo de problemas tienes con las colecciones cuando serialización? Si te refieres a no saber qué atributos a utilizar en una Lista o algo similar, puede probar con el XmlArray atributo en su propiedad. Definitivamente, usted puede serializar una colección.

1voto

TraumaPony Puntos 6635

El IntermediateSerializer en el XNA Framework es bastante maldito frío. Usted puede encontrar un montón de tutoriales sobre su uso en http://blogs.msdn.com/shawnhar

1voto

ripper234 Puntos 39314

JABÓN de Serialización funcionado bien para mí, incluso para los objetos que no estén marcadas con [Serializable]

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: