Trabajo con JSON en C#: análisis y serialización de objetos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción al trabajo con JSON en C#



JSON (JavaScript Object Notation) es un formato ligero de intercambio de datos que se utiliza ampliamente en aplicaciones web modernas, API y archivos de configuración. Para un desarrollador de C#, saber trabajar con JSON es una habilidad obligatoria, especialmente al crear clientes REST, microservicios o aplicaciones que interactúan con fuentes de datos externas.



En el ecosistema .NET existen dos enfoques principales para el procesamiento de JSON: la biblioteca clásica Newtonsoft.Json (también conocida como Json.NET) y la biblioteca moderna integrada System.Text.Json, que apareció en .NET Core 3.0 y se convirtió en el estándar en .NET 5+. Ambas bibliotecas permiten realizar dos operaciones clave: serialización (convertir un objeto de C# en una cadena JSON) y deserialización (convertir una cadena JSON de vuelta a un objeto de C#).



En este artículo, analizaremos en detalle ambos enfoques, aprenderemos a analizar estructuras de datos complejas y revisaremos las mejores prácticas para trabajar con JSON en C#.



1. Operaciones básicas: serialización y deserialización



1.1 Uso de Newtonsoft.Json (Json.NET)



Newtonsoft.Json ha sido el estándar de facto para trabajar con JSON en .NET durante muchos años. Para comenzar, instale el paquete a través de NuGet:



Install-Package Newtonsoft.Json


Consideremos una clase simple como ejemplo:



public class User{    public int Id { get; set; }    public string Name { get; set; }    public string Email { get; set; }    public bool IsActive { get; set; }}


Serialización de un objeto a JSON:



using Newtonsoft.Json;

User user = new User{ Id = 1, Name = "Iván Petrov", Email = "ivan@example.com", IsActive = true};

string json = JsonConvert.SerializeObject(user, Formatting.Indented);Console.WriteLine(json);


Resultado de la ejecución:



{  "Id": 1,  "Name": "Iván Petrov",  "Email": "ivan@example.com",  "IsActive": true}


Deserialización de JSON de vuelta a un objeto:



string jsonString = @"{""Id"":1,""Name"":""Iván Petrov"",""Email"":""ivan@example.com"",""IsActive"":true}";User deserializedUser = JsonConvert.DeserializeObject<User>(jsonString);Console.WriteLine($"Usuario: {deserializedUser.Name}, Email: {deserializedUser.Email}");


1.2 Uso de System.Text.Json



A partir de .NET Core 3.0, Microsoft presentó su propia biblioteca System.Text.Json, que está optimizada en rendimiento y no requiere dependencias externas.



Serialización:



using System.Text.Json;

User user = new User{ Id = 2, Name = "María Smirnova", Email = "maria@example.com", IsActive = false};

string json = JsonSerializer.Serialize(user, new JsonSerializerOptions { WriteIndented = true });Console.WriteLine(json);


Deserialización:



string jsonString = @"{""Id"":2,""Name"":""María Smirnova"",""Email"":""maria@example.com"",""IsActive"":false}";User deserializedUser = JsonSerializer.Deserialize<User>(jsonString);Console.WriteLine($"Usuario: {deserializedUser.Name}");


2. Trabajo con estructuras de datos complejas



2.1 Objetos anidados y colecciones



JSON a menudo contiene estructuras anidadas. Consideremos un ejemplo con un array de pedidos de un usuario:



public class Order{    public int OrderId { get; set; }    public decimal Amount { get; set; }    public List<string> Items { get; set; }}

public class Customer{ public int CustomerId { get; set; } public string FullName { get; set; } public List<Order> Orders { get; set; }}


Deserialización de JSON complejo

Blogs

Book Recommendations