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#
- Pega un ejemplo JSON en Entrada JSON (o haz clic en Cargar ejemplo / Abrir archivo).
- Fija el Nombre del tipo raíz (por defecto
Root). - Copia el código C# generado o haz clic en Descargar para guardarlo como archivo.
Ejemplo
{"id":1,"name":"A","tags":["x"]} 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.