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.
- Clase que extiende
-
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:
dotnet add package CodeDesignPlus.Net.Serializers
Install-Package CodeDesignPlus.Net.Serializers
<PackageReference Include="CodeDesignPlus.Net.Serializers" Version="1.0.0" />
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);
-
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; }} -
Serializamos y deserializamos un objeto
UserModel
utilizando la claseJsonSerializer
: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.