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.