C# Programming

Serialización JSON eficiente en C#

Spread the love

JSON (JavaScript Object Notation) es un formato ligero de intercambio de datos ampliamente utilizado en aplicaciones web y APIs. C# ofrece varias maneras de convertir objetos en cadenas JSON de forma eficiente, simplificando la comunicación con otros sistemas y permitiendo el almacenamiento de datos legibles por humanos. Este artículo explora tres métodos populares para esta conversión, comparando sus fortalezas y debilidades.

Tabla de Contenido

Convirtiendo Objetos a JSON usando JavaScriptSerializer

La clase System.Web.Script.Serialization.JavaScriptSerializer ofrece un enfoque sencillo a la serialización JSON. Sin embargo, es un componente heredado y carece de las características y el rendimiento de las bibliotecas más modernas. Generalmente se recomienda usar alternativas más nuevas para proyectos nuevos.


using System;
using System.Web.Script.Serialization;

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

public class Example
{
    public static void Main(string[] args)
    {
        Person person = new Person { Name = "John Doe", Age = 30 };

        JavaScriptSerializer serializer = new JavaScriptSerializer();
        string jsonString = serializer.Serialize(person);

        Console.WriteLine(jsonString); // Output: {"Name":"John Doe","Age":30}
    }
}

Nota: Requiere una referencia a System.Web.Extensions (típicamente encontrado bajo Ensamblados de .NET Framework). No recomendado para .NET Core y versiones posteriores.

Serialización JSON eficiente con JsonConvert.SerializeObject

Newtonsoft.Json (a menudo referido como Json.NET) es una biblioteca JSON ampliamente utilizada y de alto rendimiento para C#. Proporciona una solución robusta y rica en funciones para la serialización y deserialización JSON. Instale el paquete NuGet Newtonsoft.Json para usar este método.


using Newtonsoft.Json;

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

public class Example
{
    public static void Main(string[] args)
    {
        Person person = new Person { Name = "John Doe", Age = 30 };

        string jsonString = JsonConvert.SerializeObject(person);

        Console.WriteLine(jsonString); // Output: {"Name":"John Doe","Age":30}
    }
}

JsonConvert.SerializeObject es conciso y eficiente. Newtonsoft.Json ofrece amplias opciones de personalización para el manejo de nulos, formato y más.

Control Fina Granulado con JObject.FromObject

También parte de la biblioteca Newtonsoft.Json, la clase JObject proporciona un control preciso sobre la estructura JSON antes de la serialización. Esto es particularmente beneficioso al manipular la representación JSON antes de convertirla en una cadena.


using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

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

public class Example
{
    public static void Main(string[] args)
    {
        Person person = new Person { Name = "John Doe", Age = 30 };

        JObject jsonObject = JObject.FromObject(person);
        string jsonString = jsonObject.ToString();

        Console.WriteLine(jsonString); // Output: {"Name":"John Doe","Age":30}
    }
}

Si bien es similar a JsonConvert.SerializeObject para objetos simples, JObject.FromObject ofrece mayor flexibilidad para escenarios complejos. Puede agregar, eliminar o modificar fácilmente propiedades dentro del JObject antes de la serialización final.

Conclusión: Para el desarrollo moderno de C#, los métodos JsonConvert.SerializeObject y JObject.FromObject de Newtonsoft.Json son altamente recomendados debido a su rendimiento, características y flexibilidad. Recuerde instalar el paquete NuGet Newtonsoft.Json.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *