Serialización y deserialización en C# con ejemplo

⚡ Resumen inteligente

La serialización en C# convierte un objeto en una secuencia de bytes para poder guardarlo en un archivo o enviarlo entre aplicaciones; la deserialización reconstruye el objeto. Aquí aprenderás a serializar y deserializar objetos con ejemplos.

  • 🔄 Qué es: La serialización escribe un objeto C# en un archivo, y la deserialización lo lee de nuevo.
  • 🏷️ [Serializable]: Una clase necesita el atributo [Serializable] antes de poder ser serializada.
  • 💾 Formato binario: BinaryFormatter con un FileStream escribe el objeto en formato binario.
  • 🧩 Formatos: C# también admite la serialización XML y JSON para obtener una salida legible.
  • 🤖 Ayuda de IA: Las herramientas de IA como GitHub Copilot generan código de serialización al instante.

Serialización y deserialización en C#

Serialización y deserialización en C#

El concepto de serialización y deserialización se utiliza siempre que se deben enviar datos relacionados con objetos de una aplicación a otra. La serialización se utiliza para exportar datos de la aplicación a un archivo. La aplicación de destino luego utiliza la deserialización para exportarlos.tract los datos de la aplicación para su uso posterior.

La serialización es un concepto en el que los objetos de clase C# se escriben o serializan en archivos. Digamos que tienes una clase de C# llamada Tutorial. Y la clase tiene 2 propiedades de ID y nombre de Tutoriales.

La serialización se puede utilizar para escribir directamente las propiedades de datos de la clase Tutorial en un archivo. La deserialización se utiliza para leer los datos del archivo y construir el objeto Tutorial nuevamente.

Tipos de serialización en C#

C# admite varios formatos de serialización, y usted elige uno según dónde se vayan a utilizar los datos. Los tipos principales se enumeran a continuación.

  • Serialización binaria Convierte un objeto en un flujo binario compacto. Es rápido, pero no legible para humanos y está vinculado a .NET.
  • Serialización XML Utiliza la clase XmlSerializer para escribir las propiedades públicas de un objeto en un archivo XML legible.
  • Serialización JSON Utiliza System.Text.Json o Newtonsoft.Json para generar JSON ligero, el formato más común para las API web.
  • serialización SOAP Formatea los datos como mensajes SOAP para servicios web más antiguos.

Cómo serializar un objeto en C#

Veamos un ejemplo de cómo podemos lograrlo.

En nuestro ejemplo, realizaremos los siguientes pasos de alto nivel en el código.

  1. Cree una clase llamada Tutorial que tenga 2 propiedades, a saber, ID y Nombre.
  2. Luego crearemos un objeto a partir de la clase y asignaremos un valor de "1" a la propiedad ID y un valor de ".Net" a la propiedad nombre.
  3. Luego usaremos la serialización para serializar el objeto anterior en un archivo llamado Ejemplo.txt.
  4. Finalmente, usaremos la deserialización para deserializar el objeto del archivo y mostrar los valores en la Consola.

Ingrese el siguiente código en el archivo program.cs de la aplicación de consola.

Paso 1) Agrega la clase.

El primer paso es agregar la clase que se utilizará para la serialización.

Serializar un objeto en C#

Code Explicación:-

  1. La clase que debe serializarse debe tener el atributo [Serializable]. Esta es una palabra clave en C#. Luego, esta palabra clave se adjunta a la clase Tutorial. Si no menciona este atributo, obtendrá un error cuando intente serializar la clase.
  2. Lo siguiente es la definición de la clase que se serializará. Aquí definimos una clase llamada "Tutorial" y proporcionamos 2 propiedades, una es "ID" y la otra es "Nombre".

Paso 2) Crea el objeto.

En este paso, primero crearemos el objeto de la clase Tutorial y lo serializaremos en el archivo llamado Ejemplo.txt.

Serializar un objeto en C#

Code Explicación:-

  1. Primero, creamos un objeto de la clase Tutorial. Luego asignamos el valor de "1" a ID y ".net" a la propiedad de nombre.
  2. Luego usamos la clase de formateador que se usa para serializar o convertir el objeto a un formato binario. Los datos del archivo en serialización se realizan en formato binario. A continuación, creamos un objeto de flujo de archivos. El objeto de flujo de archivos se utiliza para abrir el archivo Ejemplo.txt con fines de escritura. Las palabras clave FileMode.Create y FileMode.Write se utilizan para mencionar específicamente que el archivo debe abrirse con fines de escritura.
  3. Finalmente, utilizamos el método Serialize para transferir los datos binarios al archivo. Luego cerramos la transmisión, ya que la escritura Inteligente Esta completo.

Paso 3) Utilice la deserialización.

Finalmente, para asegurarnos de que los datos estén presentes en el archivo, utilizamos la deserialización para deserializar el objeto del archivo.

Serializar un objeto en C#

using System;
using System.IO;
using System.Linq;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
  [Serializable]
  class Tutorial
  {
  public int ID;
  public String Name;
   static void Main(string[] args)
   {
    Tutorial obj = new Tutorial();
    obj.ID = 1;
    obj.Name = ".Net";

    IFormatter formatter = new BinaryFormatter();
    Stream stream = new FileStream(@"E:\ExampleNew.txt",FileMode.Create,FileAccess.Write);

    formatter.Serialize(stream, obj);
    stream.Close();

    stream = new FileStream(@"E:\ExampleNew.txt",FileMode.Open,FileAccess.Read);
    Tutorial objnew = (Tutorial)formatter.Deserialize(stream);

    Console.WriteLine(objnew.ID);
    Console.WriteLine(objnew.Name);

    Console.ReadKey();
  }
 }
}

Code Explicación:-

  1. Creamos el objeto “stream”para abrir el archivo Ejemplo.txt en modo de solo lectura.
  2. Luego usamos la clase de formateador que se usa para deserializar el objeto, que se almacena en el archivo Ejemplo.txt. El objeto devuelto se establece en el objeto objnew.
  3. Finalmente, mostramos las propiedades del objeto "objnew" en la consola usando las propiedades "ID" y "nombre".

Cuando se configura el código anterior y el proyecto se ejecuta usando Visual Studio, obtendrá el siguiente resultado.

Salida:-

Serializar un objeto en C#

Puede ver en el resultado anterior que los valores del archivo se deserializaron correctamente y se mostraron en la consola.

Serialización JSON en C#

JSON es el formato más utilizado para aplicaciones modernas y API web. System.Text.Json El espacio de nombres serializa y deserializa objetos con una sola llamada a un método, como se muestra a continuación.

using System;
using System.Text.Json;
namespace DemoApplication
{
  class Tutorial
  {
    public int ID { get; set; }
    public string Name { get; set; }
  }
  class Program
  {
    static void Main(string[] args)
    {
      Tutorial obj = new Tutorial { ID = 1, Name = ".Net" };
      string json = JsonSerializer.Serialize(obj);
      Console.WriteLine(json);

      Tutorial objnew = (Tutorial)JsonSerializer.Deserialize(json, typeof(Tutorial));
      Console.WriteLine(objnew.Name);
      Console.ReadKey();
    }
  }
}

Salida:

{"ID":1,"Name":".Net"}
.Net

Preguntas Frecuentes

La serialización convierte un objeto C# en una secuencia de bytes (binario, XML o JSON) para que pueda guardarse en un archivo o enviarse a otra aplicación. La deserialización reconstruye el objeto a partir de esos datos.

El atributo [Serializable] indica que una clase puede serializar sus objetos. Sin él, la serialización binaria genera una excepción al intentar escribir el objeto en un archivo.

C# admite la serialización binaria (compacta, solo para .NET), la serialización XML mediante XmlSerializer, la serialización JSON mediante System.Text.Json y la serialización SOAP para servicios web más antiguos.

La serialización escribe los datos de un objeto en un archivo o flujo de datos, mientras que la deserialización lee esos datos y reconstruye el objeto original en la memoria.

BinaryFormatter ahora está obsoleto y se considera inseguro porque puede ejecutar código dañino durante la deserialización. Microsoft Se recomienda utilizar System.Text.Json o XmlSerializer para nuevas aplicaciones.

Los asistentes de IA como GitHub Copilot autocompletan las llamadas a Serialize y Deserialize, agregan el atributo [Serializable] y generan código de serialización JSON o XML a partir de un comentario breve.

Sí. Las herramientas basadas en IA generan clases de modelos, permiten elegir entre formatos JSON, XML y binarios, y añaden gestión de errores para que el código de serialización sea seguro y completo.

La serialización binaria utiliza System.Runtime.Serialization.Formatters.Binary, JSON utiliza System.Text.Json y XML utiliza System.Xml.Serialization.

Resumir este post con: