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

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 con ejemplos



JSON (JavaScript Object Notation) es uno de los formatos de intercambio de datos más populares en aplicaciones web modernas, API y archivos de configuración. En el ecosistema .NET, los desarrolladores tienen a su disposición potentes herramientas para trabajar con JSON, que permiten serializar fácilmente objetos a JSON y viceversa. En este artículo, analizaremos en detalle dos enfoques principales: la biblioteca integrada System.Text.Json (recomendada para .NET Core 3.0+ y .NET 5+) y la popular biblioteca de terceros Newtonsoft.Json (también conocida como Json.NET).



1. System.Text.Json — el estándar moderno de .NET



A partir de .NET Core 3.0, Microsoft presentó su propia biblioteca de alto rendimiento para trabajar con JSON — System.Text.Json. Está optimizada para un consumo mínimo de memoria y alta velocidad, lo que la convierte en la elección ideal para nuevos proyectos.



1.1. Instalación e importación



La biblioteca ya está integrada en .NET 5/6/7/8/9, por lo que no se requiere instalación adicional. Para usarla, basta con incluir el espacio de nombres:



using System.Text.Json;using System.Text.Json.Serialization;


1.2. Serialización y deserialización básicas



Veamos un ejemplo simple: serializar un objeto a JSON y viceversa.



// Definimos la clasepublic class Person{    public string Name { get; set; }    public int Age { get; set; }    public bool IsEmployed { get; set; }}

// Serializaciónvar person = new Person { Name = "Iván", Age = 30, IsEmployed = true };string json = JsonSerializer.Serialize(person);Console.WriteLine(json); // {"Name":"Iván","Age":30,"IsEmployed":true}

// Deserializaciónvar deserializedPerson = JsonSerializer.Deserialize<Person>(json);Console.WriteLine(deserializedPerson.Name); // Iván


1.3. Trabajo con atributos



System.Text.Json admite atributos para un ajuste fino de la serialización:



public class Product{    [JsonPropertyName("product_id")]    public int Id { get; set; }        [JsonIgnore]    public string InternalCode { get; set; }        [JsonConverter(typeof(JsonStringEnumConverter))]    public ProductCategory Category { get; set; }}

public enum ProductCategory{ Electronics, Clothing, Food}

var product = new Product { Id = 101, InternalCode = "SECRET", Category = ProductCategory.Electronics };

string json = JsonSerializer.Serialize(product);// {"product_id":101,"Category":"Electronics"}// InternalCode no aparece en el JSON gracias a [JsonIgnore]


1.4. Opciones de serialización



Puedes configurar el comportamiento del serializador mediante JsonSerializerOptions:



var options = new JsonSerializerOptions{    WriteIndented = true,           // Salida formateada con sangría    PropertyNamingPolicy = JsonNamingPolicy.CamelCase, // camelCase para propiedades    DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull // Ignorar null};

string prettyJson = JsonSerializer.Serialize(person, options);Console.WriteLine(prettyJson);/* Salida:{ "name": "Iván", "age": 30, "isEmployed": true}*/


2. Newtonsoft.Json (Json.NET) — una herramienta probada por el tiempo



Antes de la llegada de System.Text.Json, Newtonsoft.Json era el estándar de facto para trabajar con JSON en .NET. Ofrece configuraciones más flexibles y un amplio conjunto de funciones, aunque es inferior en rendimiento.



2.1. Instalación



Para usar Newtonsoft.Json, es necesario instalar el paquete NuGet:



// A través de Package Manager Console:Install-Package Newtonsoft.Json

// O mediante .NET CLI:dotnet add package Newtonsoft.Json


2.2. Trabajo básico



using Newtonsoft.Json;

public class Or

Recommendations