Trabajo con JSON en C#: análisis y serialización para principiantes

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 ampliamente utilizado en desarrollo web, archivos de configuración y API. Si estás comenzando a aprender C# y .NET, saber trabajar con JSON es una habilidad obligatoria. En este artículo, analizaremos cómo realizar el análisis de JSON (conversión de una cadena a un objeto) y la serialización (conversión de un objeto a una cadena JSON) utilizando las herramientas integradas de .NET y la popular biblioteca Newtonsoft.Json.



Veremos ejemplos prácticos que te ayudarán a dominar rápidamente los conceptos clave. Todo el código está escrito en C# (.NET 6+), pero funcionará en versiones anteriores con cambios mínimos.



1. Trabajo integrado con JSON: espacio de nombres System.Text.Json



A partir de .NET Core 3.0, Microsoft presentó el espacio de nombres de alto rendimiento System.Text.Json. Está integrado en la plataforma y no requiere instalar paquetes adicionales. Es la herramienta principal para trabajar con JSON en aplicaciones .NET modernas.



1.1 Serialización de un objeto a JSON



La serialización es el proceso de convertir un objeto de C# en una cadena JSON. Consideremos una clase simple Person:



public class Person{    public string Name { get; set; }    public int Age { get; set; }    public string Email { get; set; }}

// Usovar person = new Person{ Name = "Iván Ivanov", Age = 30, Email = "ivan@example.com"};

string json = System.Text.Json.JsonSerializer.Serialize(person);Console.WriteLine(json);


Resultado de la ejecución:



{"Name":"Iván Ivanov","Age":30,"Email":"ivan@example.com"}


Por defecto, las propiedades se serializan con nombres que coinciden con los nombres de las propiedades en C#. Puedes configurar el formato usando JsonSerializerOptions, por ejemplo, para hacer el JSON más legible:



var options = new System.Text.Json.JsonSerializerOptions{    WriteIndented = true};

string prettyJson = JsonSerializer.Serialize(person, options);Console.WriteLine(prettyJson);


Ahora la salida tendrá sangría:



{  "Name": "Iván Ivanov",  "Age": 30,  "Email": "ivan@example.com"}


1.2 Deserialización (análisis) de JSON a un objeto



El proceso inverso, convertir una cadena JSON en un objeto de C#, se llama deserialización. Usa el método JsonSerializer.Deserialize<T>():



string jsonString = @"{""Name"":""María Petrova"",""Age"":25,""Email"":""maria@example.com""}";

Person? person = System.Text.Json.JsonSerializer.Deserialize<Person>(jsonString);

if (person != null){ Console.WriteLine($"Nombre: {person.Name}, Edad: {person.Age}");}


Importante: si el JSON no coincide con la estructura de la clase, se lanzará una excepción JsonException. Para un trabajo seguro, usa manejo de excepciones o verifica si es null.



1.3 Trabajo con JsonDocument para JSON arbitrario



A veces la estructura del JSON no se conoce de antemano o quieres leer datos sin crear clases. Para esto, usa JsonDocument:



string jsonText = @"{""product"":""Portátil"",""price"":75000,""inStock"":true}";

using JsonDocument doc = JsonDocument.Parse(jsonText);JsonElement root = doc.RootElement;

string product = root.GetProperty("product").GetString();int price = root.GetProperty("price").GetInt32();bool inStock = root.GetProperty("inStock").GetBoolean();

Console.WriteLine($"{product}: {price} rub. (disponible: {inStock})");


JsonDocument implementa IDisposable, por lo que debes usar using para liberar recursos.



2. Biblioteca clásica Newtonsoft.Json (Json.NET)



Antes de la aparición de System.Text.

Blogs

Book Recommendations