← Todas las herramientas Code Gen

Generador de Clases C# desde JSON

Pega JSON y obtén al instante clases C# limpias con tipos y anotaciones correctos.

Modos POCO, Record y anotación

Los Plain Old CLR Objects (POCOs) son la salida C# más flexible: propiedades públicas con accesores { get; set; }, constructor sin parámetros y compatibilidad completa con System.Text.Json y Newtonsoft.Json. Es la salida por defecto compatible con todas las versiones de .NET.

Los records de C# 9+ ofrecen una alternativa concisa para objetos de transferencia de datos inmutables. Una declaración de record posicional genera automáticamente un constructor primario, propiedades init-only, igualdad estructural y un método deconstruct. Ideal para modelos de respuesta de API y objetos de valor de dominio.

El modo anotación añade [JsonPropertyName("key")] (System.Text.Json) o [JsonProperty("key")] (Newtonsoft.Json) a cada propiedad para que los nombres PascalCase de C# se mapeen correctamente a las claves JSON camelCase. Los tipos de referencia nullable (string? y T?) se emiten cuando un campo está ausente en algunos objetos.

Mapeo de tipos y convenciones de nomenclatura

Las cadenas JSON se convierten en string, los enteros en int (o long para valores grandes), los decimales en double, los booleanos en bool, los campos solo-null en object? y los arrays en List<T>. Los objetos anidados generan sus propias clases con nombre.

Las claves JSON se convierten automáticamente a nombres de propiedad PascalCase C# según las directrices de Microsoft: las claves camelCase como "firstName" se convierten en "FirstName", las claves snake_case como "first_name" también, y las claves kebab-case como "first-name" igualmente. La clave original se preserva en el atributo [JsonPropertyName].

La declaración de namespace es "MyApp.Models" por defecto pero es configurable. Se añade una directiva using para System.Collections.Generic cuando hay propiedades List<T>. La salida es un único archivo .cs con todas las clases en orden de dependencia.

Flujos de trabajo de desarrollo .NET

El flujo de trabajo más común es modelar una API REST de terceros. Pega una respuesta JSON de muestra, selecciona el modo de anotación System.Text.Json y deposita el archivo generado en tu proyecto. Las clases son inmediatamente utilizables con HttpClient.GetFromJsonAsync<T>().

Los proyectos ASP.NET Core Web API se benefician de modelos de solicitud y respuesta bien tipados. El generador produce clases que funcionan directamente como parámetros de acción del controlador ([FromBody]) y tipos de retorno.

Las migraciones de Entity Framework Core parten de clases de entidad C#. Aunque el generador no puede añadir atributos EF automáticamente, la salida POCO proporciona un sólido punto de partida que puedes decorar con [Table], [Key] y propiedades de navegación.

FAQ

¿Se envían mis datos a un servidor?

No. Todo el procesamiento se ejecuta completamente en tu navegador. Tu JSON nunca sale de tu dispositivo.

¿Qué biblioteca de anotación debo elegir?

Elige System.Text.Json para proyectos .NET 6+ (es el predeterminado sin dependencia adicional). Elige Newtonsoft.Json si tu proyecto ya lo usa o apunta a .NET Framework.

¿Cómo se manejan las palabras reservadas de C# como nombres de propiedad?

Las palabras reservadas como "class", "event", "operator" y "string" se prefijan con "@" (ej. @class) según la sintaxis de identificadores verbatim de C#, y un atributo [JsonPropertyName] preserva la clave JSON original.

¿Se admiten tipos de referencia nullable?

Sí. Cuando una propiedad tiene valor null o está ausente en algunos elementos del array, se tipa como string? o T? con la anotación nullable. Se emite una directiva #nullable enable al principio del archivo.

¿Puedo generar record structs en lugar de records?

Sí. Un interruptor alterna entre record class (tipo referencia, por defecto) y record struct (tipo valor, C# 10+) según tus requisitos de rendimiento y semántica.

Herramientas relacionadas