Skip to content

Overview

La librería CodeDesignPlus.Net.Serializers proporciona un conjunto de herramientas para facilitar la serialización y deserialización de objetos en formato JSON, con un enfoque particular en el manejo de eventos de dominio. Esta librería busca simplificar la transformación de objetos complejos a JSON y viceversa, al tiempo que ofrece flexibilidad y control sobre el proceso de serialización.

Propósito y alcance


El principal propósito de esta librería es proporcionar una forma sencilla y consistente de serializar y deserializar objetos en formato JSON, especialmente útil en aplicaciones que utilizan eventos de dominio. La librería incluye un ContractResolver personalizado que permite ignorar propiedades específicas durante la serialización, así como personalizar el nombre de las propiedades en el JSON resultante. Además, la librería proporciona métodos estáticos para simplificar el uso de la serialización y deserialización de JSON.

Principales características


  • EventContractResolver Personalizado: Permite controlar qué propiedades se serializan, especialmente útil para eventos de dominio donde se desea excluir metadatos.
  • Personalización del Nombre de Propiedades: Permite convertir la primera letra de cada propiedad a minúscula.
  • Métodos Estáticos de Serialización/Deserialización: Simplifica la serialización y deserialización a través de una clase estática JsonSerializer.
  • Flexibilidad en la Configuración: Permite el uso de configuraciones personalizadas de JsonSerializerSettings para casos de uso avanzados.

Casos de uso típicos


  • Serialización de eventos de dominio para su almacenamiento o transporte en un sistema de mensajería.
  • Deserialización de datos JSON desde APIs externas.
  • Transformación de objetos a JSON con un formato específico.
  • Control de propiedades que no deben ser serializadas o deserializadas.
  • Serialización de objetos para logging o debugging.

Componentes Principales


  • EventContractResolver:

    • Clase que extiende DefaultContractResolver de Newtonsoft.Json, proporcionando la lógica para ignorar ciertas propiedades y cambiar el nombre de propiedades.
    • Se utiliza para personalizar el proceso de serialización y deserialización de objetos.
  • JsonSerializer:

    • Clase estática que contiene métodos para serializar y deserializar objetos.
    • Simplifica el proceso de serialización y deserialización, ofreciendo métodos con opciones adicionales como formato y configuraciones.
  • Directorysrc
    • DirectoryCodeDesignPlus.Net.Serializers
      • EventContractResolver.cs
      • JsonSerializer.cs

Primeros Pasos


En esta sección, aprenderás a instalar y configurar la librería CodeDesignPlus.Net.Serializers en tu proyecto de .NET. Además, explorarás los componentes que proporciona la librería para serializar y deserializar objetos en formato JSON.

Requisitos previos

  • .NET 8 o superior.
  • Newtonsoft.Json (Esta librería es una dependencia de CodeDesignPlus.Net.Serializers).

Instalación

Para instalar la librería CodeDesignPlus.Net.Serializers, puedes utilizar el administrador de paquetes NuGet o la CLI de .NET. A continuación, se muestra un ejemplo de cómo instalar la librería utilizando la CLI de .NET:

Terminal window
dotnet add package CodeDesignPlus.Net.Serializers

Ejemplo rápido


La solución CodeDesignPlus.Net.Serializers.Sample muestra cómo serializar y deserializar objetos en formato JSON utilizando la librería CodeDesignPlus.Net.Serializers. A continuación, se muestra un ejemplo de cómo utilizar la librería en tu proyecto:

using CodeDesignPlus.Net.Serializers;
using CodeDesignPlus.Net.Serializers.Sample;
var userModel = new UserModel
{
Id = Guid.NewGuid(),
Name = "John Doe",
Email = "john.doe@codedesignplus.com",
Birthdate = DateTime.Now
};
var json = JsonSerializer.Serialize(userModel);
Console.WriteLine(json);
var userModelDeserialized = JsonSerializer.Deserialize<UserModel>(json);
Console.WriteLine(userModelDeserialized.Name);
  1. Creamos el modelo UserModel:

    using System;
    namespace CodeDesignPlus.Net.Serializers.Sample;
    public class UserModel
    {
    public Guid Id { get; set; }
    public string? Name { get; set; }
    public string? LastName { get; set; }
    public string? Email { get; set; }
    public Instant Birthdate { get; set; }
    }
  2. Serializamos y deserializamos un objeto UserModel utilizando la clase JsonSerializer:

    var json = JsonSerializer.Serialize(userModel);
    Console.WriteLine(json);
    var userModelDeserialized = JsonSerializer.Deserialize<UserModel>(json);
    Console.WriteLine(userModelDeserialized.Name);

JsonSerializer


La clase JsonSerializer proporciona métodos estáticos para serializar y deserializar objetos en formato JSON. Estos métodos simplifican el proceso de transformación de objetos a JSON y viceversa, ofreciendo opciones adicionales para personalizar la serialización y deserialización.

EventContractResolver


El EventContractResolver es una clase que extiende DefaultContractResolver de Newtonsoft.Json y proporciona la lógica para personalizar el proceso de serialización y deserialización de objetos. Esta clase se utiliza para controlar qué propiedades se incluyen en el JSON resultante y cómo se nombran las propiedades.

Conclusiones


  • La librería CodeDesignPlus.Net.Serializers simplifica la serialización y deserialización de objetos en formato JSON, con un enfoque en el manejo de eventos de dominio.
  • El uso del EventContractResolver permite personalizar las propiedades que se incluyen en el JSON resultante.
  • La clase estática JsonSerializer ofrece métodos para simplificar la serialización y deserialización con opciones adicionales.
  • La librería es flexible y permite el uso de JsonSerializerSettings para configuraciones avanzadas.

Recursos externos