Procesamiento de JSON en C# (.NET): guía completa

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

Procesamiento de JSON en C# (.NET): guía completa

JSON (JavaScript Object Notation) es un formato ligero de intercambio de datos, ampliamente utilizado en aplicaciones web, API y archivos de configuración. En el ecosistema de C# (.NET) existen dos enfoques principales para trabajar con JSON: la biblioteca clásica Newtonsoft.Json (también conocida como Json.NET) y la moderna biblioteca integrada System.Text.Json, que apareció en .NET Core 3.0 y versiones posteriores. En este artículo analizaremos en detalle ambas herramientas, sus capacidades, sintaxis y mejores prácticas.



1. Newtonsoft.Json (Json.NET)

La biblioteca Newtonsoft.Json fue durante mucho tiempo el estándar de facto para trabajar con JSON en C#. Proporciona una API rica, soporte para LINQ to JSON, configuración flexible de serialización y deserialización. Se puede instalar a través de NuGet:

Install-Package Newtonsoft.Json


1.1. Serialización y deserialización

Las operaciones más básicas son convertir un objeto a JSON y viceversa. Consideremos la clase Person:

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


Serialización (objeto → JSON):

var person = new Person { Name = "Iván", Age = 30, Email = "ivan@example.com" };string json = JsonConvert.SerializeObject(person, Formatting.Indented);Console.WriteLine(json);


Deserialización (JSON → objeto):

string json = @"{""Name"":""María"",""Age"":25,""Email"":""maria@example.com""}";Person person = JsonConvert.DeserializeObject<Person>(json);Console.WriteLine(person.Name); // María


1.2. Trabajo con JObject y JArray

La biblioteca Newtonsoft.Json admite LINQ to JSON, lo que permite acceder dinámicamente a los elementos JSON sin crear clases fuertemente tipadas.

string json = @"{""products"":[{""id"":1,""name"":""Portátil""},{""id"":2,""name"":""Ratón""}]}";JObject obj = JObject.Parse(json);JArray products = (JArray)obj["products"];

foreach (var product in products){ int id = (int)product["id"]; string name = (string)product["name"]; Console.WriteLine($"ID: {id}, Name: {name}");}


1.3. Atributos para configurar la serialización

Con los atributos se pueden controlar los nombres de las propiedades en JSON, ignorar campos, establecer valores predeterminados y mucho más.

public class User{    [JsonProperty("user_name")]    public string Name { get; set; }

[JsonIgnore] public string Password { get; set; }

[JsonProperty("registration_date")] public DateTime CreatedAt { get; set; }}

// Al serializar, Password se omitirá y Name se convertirá en "user_name"string json = JsonConvert.SerializeObject(user);


2. System.Text.Json (biblioteca integrada de .NET)

A partir de .NET Core 3.0, Microsoft presentó su propia biblioteca System.Text.Json, optimizada para el rendimiento y el consumo mínimo de memoria. No requiere la instalación de paquetes adicionales (excepto algunas extensiones).



2.1. Serialización y deserialización

El trabajo con System.Text.Json es similar a Newtonsoft.Json, pero tiene algunas diferencias en la sintaxis y el comportamiento predeterminado (por ejemplo, distingue entre mayúsculas y minúsculas).

using System.Text.Json;

var person = new Person { Name = "Alexéi", Age = 28, Email = "alex@example.com" };string json = JsonSerializer.Serialize(person, new JsonSerializerOptions { WriteIndented = true });Console.WriteLine(json);

// Deserializaciónstring jsonInput = @"{""Name"":""Olga"",""Age"":32,""Email"":""olga@example.com""}";Person deserializedPerson = JsonSerializer.Deserialize<Person>(jsonInput);


¡Importante! Por defecto, System.Text.Json t

Recommendations