JSON a Clase C#
Pega un ejemplo de JSON y obtén clases POCO en C# listas para pegar en un archivo .cs. Selecciona tipos sensatos, maneja objetos anidados con definiciones de clase adicionales, soporta tipos de referencia anulables y emite atributos de System.Text.Json o Newtonsoft.Json dependiendo de tu proyecto.
Cómo convertir JSON a C#
-
1
Pega el JSON
Un solo ejemplo es suficiente. Múltiples ejemplos mejoran la inferencia de tipos anulables y de elementos de arreglos.
-
2
Elige el estilo
System.Text.Json (.NET 6+) o Newtonsoft.Json (legado). Nombres de propiedades en PascalCase con `[JsonPropertyName]` para JSON en camelCase.
-
3
Elige la versión de C# objetivo
C# 10+ para registros y espacios de nombres con alcance de archivo, C# 8 para tipos de referencia anulables, o versiones anteriores para máxima compatibilidad.
-
4
Copia las clases
Una clase raíz más clases anidadas para cada forma de objeto, todo en un archivo listo para agregar a tu proyecto.
Ejemplo de salida
Para la entrada:
{ "firstName": "Alice", "age": 30, "emails": ["a@a.com"], "address": { "city": "Madrid" } }
Salida de System.Text.Json (C# 10+):
public class User
{
[JsonPropertyName("firstName")]
public string FirstName { get; set; } = default!;
[JsonPropertyName("age")]
public int Age { get; set; }
[JsonPropertyName("emails")]
public List<string> Emails { get; set; } = new();
[JsonPropertyName("address")]
public Address Address { get; set; } = default!;
}
public class Address
{
[JsonPropertyName("city")]
public string City { get; set; } = default!;
}
Mapeo de tipos
| JSON | Tipo C# |
|---|---|
| string | string |
| integer | int (o long para > int.MaxValue) |
| number (decimal) | double (o decimal si se opta) |
| boolean | bool |
| null | object? (o fusionado con hermano) |
| fecha ISO-8601 | DateTime (o DateOnly) |
| cadena con forma de GUID | Guid |
| arreglo de cadenas | List<string> |
| objeto | Clase anidada |
Opciones de atributos
- System.Text.Json (
[JsonPropertyName("foo")]), preferido para .NET 6+ y nuevos proyectos. - Newtonsoft.Json (
[JsonProperty("foo")]), para proyectos heredados o cuando necesitas características específicas de Newtonsoft. - Ninguno, los nombres de las propiedades coinciden exactamente con las claves JSON (funciona solo si las claves JSON ya están en PascalCase).
Errores comunes
- Usar
intpara un campo que podría desbordarse. Si tu JSON tiene valores que superanint.MaxValue, usalong. El generador promueve automáticamente cuando ve valores grandes. - Faltar
[JsonIgnore]para propiedades computadas. Si agregas propiedades auxiliares a la clase generada, decóralas con[JsonIgnore]o se serializarán al salir. - Olvidar el análisis independiente de la cultura. Los campos
decimaldeben deserializarse conCultureInfo.InvariantCulture; System.Text.Json lo hace por defecto, Newtonsoft con configuraciones globales. - Confiar en el generador con un solo ejemplo. La nulabilidad y los tipos de elementos de arreglos se adivinan de lo que ve. Siempre verifica las anotaciones anulables contra el comportamiento real de tu API.
Preguntas frecuentes
Para nuevos proyectos en .NET 6+, usa System.Text.Json, es más rápido, está integrado y ahora soporta casi todas las características que tiene Newtonsoft. Usa Newtonsoft para proyectos heredados o cuando necesites sus características específicas (resolutores de contrato personalizados, JObject, manejo dinámico).
Los registros son idiomáticos para DTOs inmutables en C# 10+. Te dan igualdad de valor y una sintaxis concisa. Las clases son mejores cuando necesitas mutación o compatibilidad con el legado. La herramienta te permite elegir cualquiera.
Si tu proyecto usa tipos de referencia anulables (C# 8+), los campos observados como nulos en cualquier ejemplo se convierten en string?, int?, etc. Sin NRT, la nulabilidad se señala solo para tipos de valor (por ejemplo, int?).
Los arreglos mixtos de diferentes formas de objeto no son directamente representables en C#. La herramienta infiere una clase base común o (como alternativa) object; para arreglos mixtos generalmente querrás rediseñar el JSON.
Herramientas relacionadas
Referencia de la tabla ASCII
Tabla ASCII completa del 0 al 127 con decimal, hex, octal, binario y referencia numérica HTML para cada carácter, incluidos los códigos de control como NUL, LF y DEL.
Referencia de caracteres HTML
Lista buscable de entidades HTML, sus códigos nombrados y numéricos, y una copia con un clic para caracteres y símbolos especiales.
Referencia de atajos de teclado
Busca los atajos predeterminados documentados de VS Code, Chrome y Bash con GNU Readline en macOS, Windows y Linux.
Generador de letras aleatorias
Genera letras aleatorias A-Z. Elige la cantidad, usa mayúsculas, minúsculas o mezcla de ambas, y aplica el resultado en juegos, consignas o clase.
Generador de Paletas de Color
Genera paletas monocromáticas, análogas, complementarias, triádicas o tetrádicas desde un color base HEX y exporta variables CSS listas para copiar.
Generador de EditorConfig
Genera un archivo .editorconfig con tu estilo y tamaño de indentación, fin de línea, charset y reglas de espacios para un formato consistente en IDEs y editores.
Herramienta disponible en otros idiomas
- JSON vers classe C# [FR]
- JSON till C#-klass [SV]
- JSON ถึงคลาสใน C# [TH]
- تحويل JSON إلى فئة C# [AR]
- JSON ke Kelas C# [ID]
- Từ JSON đến lớp C# [VI]
- JSON을 C# 클래스로 [KO]
- JSON zu C# Klasse [DE]
- JSON naar C#-klasse [NL]
- JSON na klasę C# [PL]
- JSONからC#クラスへ [JA]
- JSON para Classe C# [PT]
- JSON в класс C# [RU]
- JSON'ten C# Sınıfına [TR]
- 从 JSON 到 C# 类 [ZH]
- JSON to C# Class [EN]
- JSON in classe C# [IT]