JSON a clases C#

Genera clases C# a partir de JSON con propiedades en PascalCase, atributos [JsonPropertyName], tipos de referencia anulables y colecciones List<T>. Gratis y privado.

Usa atributos de System.Text.Json y tipos de referencia anulables (string?, long?).

Se ejecuta completamente en tu navegador. Tus datos nunca se suben.

Herramientas Relacionadas

Ver Todas

¿Qué es JSON a C#?

Convierte un ejemplo JSON en clases C# para System.Text.Json. Cada propiedad está en PascalCase, lleva un atributo [JsonPropertyName("…")] con la clave original y usa tipos anulables cuando el ejemplo contiene valores null o ausentes.

Cómo usar JSON a C#

  1. Pega un ejemplo JSON en Entrada JSON (o haz clic en Cargar ejemplo / Abrir archivo).
  2. Fija el Nombre del tipo raíz (por defecto Root).
  3. Copia el código C# generado o haz clic en Descargar para guardarlo como archivo.

Ejemplo

Entrada
{"id":1,"name":"A","tags":["x"]}
Salida
using System.Collections.Generic;
using System.Text.Json.Serialization;

public class Root
{
    [JsonPropertyName("id")]
    public long Id { get; set; }

    [JsonPropertyName("name")]
    public string Name { get; set; } = string.Empty;

    [JsonPropertyName("tags")]
    public List<string> Tags { get; set; } = new();
}

Cuándo usar JSON a C#

Úsalo para clientes HTTP de .NET, modelos de ASP.NET o datos de prueba. Para Newtonsoft.Json, sustituye el atributo por [JsonProperty]; para importes monetarios, plantéate cambiar double por decimal.

Cómo funciona JSON a C#

El ejemplo se recorre de forma recursiva y cada posición acumula los tipos que ha visto. Los arrays de objetos se fusionan en un solo tipo: una clave que falta en algunos elementos pasa a ser opcional, una clave que es null en algún sitio pasa a ser anulable, los enteros mezclados con decimales se convierten en un tipo de coma flotante y cualquier otra mezcla de tipos recurre a un tipo dinámico. Los objetos anidados se convierten en tipos con nombre propio (PascalCase de la clave, claves de array en singular: orders → Order), con sufijos numéricos si los nombres coinciden. La salida C# convierte enteros en long, decimales en double, cadenas en string, booleanos en bool, arrays en List<T>, objetos anidados en sus propias clases y valores dinámicos en object?. Los valores anulables u opcionales reciben ?; las cadenas no anulables se inicializan con string.Empty y las listas u objetos con new(), para que el código compile sin avisos con los tipos de referencia anulables activados.

Casos de Uso Comunes

  • Deserializar una respuesta de API con HttpClient y System.Text.Json
  • Crear modelos de petición/respuesta para un controlador de ASP.NET
  • Modelar secciones de configuración JSON
  • Generar clases para disparadores de Azure Functions

Preguntas Frecuentes

¿Por qué todas las propiedades llevan anotación?

El atributo conserva la clave JSON exacta aunque el nombre en C# sea distinto, así que la serialización funciona en ambos sentidos con cualquier política de nombres.

¿Por qué double en lugar de decimal?

JSON no tiene tipo decimal; double coincide con lo que produce el parser. Usa decimal para importes monetarios.

¿Funciona con Newtonsoft.Json?

Sí, tras sustituir [JsonPropertyName] por [JsonProperty] y cambiar la directiva using.

Explora más categorías