¿Es posible deserializar (C#) una pieza de xml, csv, json (lo que sea) y no saber su tipo? ¿Pero se te devolverá un objeto (que finalmente es el tipo correcto)?Sin conocer un tipo antes de deserializar
Respuesta
Sí, es posible.
Los datos XML/CSV/JSON serializados deben contener identificadores para permitir que el deserializador sepa qué tipos de objetos crear, ya que esto no se puede conocer de antemano. Para que el deserializador pueda construir nuevas instancias de objetos, generalmente se emplea el patrón de diseño FactoryMethod.
La deserialización es más difícil que la serialización.
No de ninguna manera. Tendría que escribir lógica para analizar los datos y decidir qué tipo se asemeja más a su formato.
Comúnmente sí. Pero depende de qué serialización usas. Los datos serializados deben contener metadatos sobre los tipos de objetos serializados. Por ejemplo, la serialización xml (System.Xml.Serialization) no es compatible con este escenario.
Depende de la serialización.
El BinarySerializer inserta información de tipo en su flujo de salida, por lo que lo que usted describe funcionaría perfectamente. Obtienes un objeto e incluso puedes hacer una reflexión sobre él y luego lanzarlo al tipo correcto.
La serialización XML no funciona así, por lo que el XmlSerializer exige un tipo en su constructor.
Es mejor que esté en un escenario donde los datos pueden ser de un número limitado de tipos, todos los cuales heredan de un tipo base. Luego puede dar el tipo de base (que está decorado con los atributos de tipo conocidos para que sepa todo sobre todos los otros tipos que podría ser) y luego deserializar los datos al tipo base estándar, luego inspeccionarlos.
CSV y JSON son aún más difíciles, ya que no hay una gran cantidad de compatibilidad de serialización para ellos al horno en el marco.
- 1. ¿Cómo deserializo XML sin conocer el tipo de antemano?
- 2. ¿Cómo devuelvo FileResult en ASP.NET sin conocer el tipo MIME?
- 3. Usando un nuevo operador para copiar un objeto en un montón sin conocer su tipo
- 4. ¿Cómo uso un XmlSerializer para deserializar un objeto que podría ser de una clase base o derivada sin conocer el tipo de antemano?
- 5. ¿Usando DBNull.Value con SqlParameter sin conocer sqlDbType?
- 6. G. múltiple con matplotlib sin conocer el número de parcelas antes de ejecutar
- 7. Deserializar el tipo desconocido con protobuf-net
- 8. Liquibase caer restricción sin conocer su nombre
- 9. ¿Cómo atravesar Request.Form sin conocer ningún detalle?
- 10. Jackson deserializar a lo específico tipo primitivo
- 11. ¿Existe una forma fácil de determinar el tipo de archivo sin conocer su extensión?
- 12. ¿Cómo deserializar usando JSON.Net a un tipo anónimo?
- 13. Json.NET, no se puede deserializar tipo nulable
- 14. Cómo acceder a la propiedad genérica sin conocer el tipo genérico cerrado
- 15. usando newtonsoft, cómo deserializar sin saber el tipo hasta el tiempo de ejecución?
- 16. Cómo leer archivos de texto sin conocer la codificación
- 17. Buscar XDocument utilizando LINQ sin conocer el espacio de nombres
- 18. Pliegue de mayúsculas UTF-8 sin conocer el idioma
- 19. XML matriz de cadenas deserializar como nombre diferente tipo
- 20. Análisis de json en C# sin conocer los índices
- 21. Conocer el recuento de colecciones secundarias sin cargarlas en NHIbernate
- 22. ¿Cómo serializar/deserializar un hashmap?
- 23. ¿Cómo puedo inicializar una matriz sin conocer su tamaño?
- 24. ¿Cómo deserializar un elemento como un XmlNode?
- 25. deserializar variable de tipo matriz JSON usando DataContractJsonSerializer
- 26. ¿Qué significa "salir" antes de un parámetro de tipo genérico?
- 27. JAXB: ¿Cómo se puede deserializar XML sin espacios de nombres
- 28. ¿Iniciar un archivo con argumentos de línea de comando sin conocer la ubicación de exe?
- 29. Deserializar cadena JSON en C# sin usar el reflejo
- 30. deserializar una matriz de bytes