Herramienta de Tool Kumar
JSON a clases C#
Genera modelos C# para System.Text.Json. La salida predeterminada asigna un atributo JsonPropertyName a cada propiedad y usa required para los campos presentes en todos los registros del ejemplo.
Cómo usar esta herramienta
- Pega una respuesta representativa que incluya registros cuyos campos difieran.
- Revisa la salida generada y cambia el nombre raíz si es necesario.
- Copia o descarga el código y comprueba después los tipos con el contrato de tu API.
Ejemplo práctico
Esta salida procede del conversor integrado. Los dos precios permiten inferir un campo de coma flotante; los valores null y de cadena de note permiten inferir un campo que admite null.
Entrada
{
"user-id": 42,
"profile": {
"city": "London",
"created_at": "2026-10-14T09:00:00Z"
},
"items": [
{
"price": 12,
"note": null
},
{
"price": 12.5,
"note": "gift"
}
]
}Salida
using System.Collections.Generic;
using System.Text.Json.Serialization;
public class Root
{
[JsonPropertyName("user-id")]
public required long UserId { get; set; }
[JsonPropertyName("profile")]
public required Profile Profile { get; set; }
[JsonPropertyName("items")]
public required List<Item> Items { get; set; }
}
public class Profile
{
[JsonPropertyName("city")]
public required string City { get; set; }
[JsonPropertyName("created_at")]
public required string CreatedAt { get; set; }
}
public class Item
{
[JsonPropertyName("price")]
public required double Price { get; set; }
[JsonPropertyName("note")]
public required string? Note { get; set; }
}
Deserializar con System.Text.Json
Copia las clases en tu proyecto .NET y activa las anotaciones de tipos que admiten null. Los atributos JsonPropertyName mapean las propiedades PascalCase a las claves exactas de la entrada.
Usa una versión de .NET cuyo System.Text.Json admita miembros required, como .NET 7 o posterior. Configura las opciones del serializador para tu aplicación.
using System.Text.Json;
Root? model = JsonSerializer.Deserialize<Root>(responseBody);Opciones y casos especiales
- La opción predeterminada es System.Text.Json. Elige Newtonsoft en Más opciones para obtener atributos JsonProperty de Newtonsoft.Json y JToken para valores desconocidos.
- Los miembros required generados necesitan C# 11 o posterior. La sintaxis de referencias que admiten null presupone que las anotaciones correspondientes están activadas.
- Los enteros usan long, los enteros fuera del rango de 64 bits con signo usan decimal y las fracciones usan double. decimal también tiene un rango finito; elige una representación personalizada para valores mayores.
- Un campo que admite null puede seguir siendo required si todos los registros contienen su clave. La presencia obligatoria y la aceptación de null son reglas independientes. Las fechas siguen siendo string.
Privado por defecto
Tu documento permanece en este navegador. Tool Kumar analiza, convierte y crea las descargas en tu dispositivo, sin cuenta ni pasos para subir archivos.
Preguntas sobre JSON a clases C#
- ¿Usa System.Text.Json o Newtonsoft.Json?
- System.Text.Json de forma predeterminada, con atributos JsonPropertyName. Elige Newtonsoft en el menú Más opciones del conversor para generar atributos JsonProperty de Newtonsoft.Json.
- ¿Qué versión de C# requiere la salida?
- C# 11 o posterior para los miembros required. Activa los tipos de referencia que admiten null para usar string? y las demás anotaciones de referencia como se espera.
- ¿Por qué una propiedad required puede admitir null?
- La clave aparece en todos los registros del ejemplo, pero su valor puede ser null. Por ejemplo, required string? Note modela la presencia por separado del tipo del valor.
- ¿Genera listas y clases anidadas?
- Sí. Los arrays de objetos se convierten en List<Item> y se genera una clase para cada estructura anidada.