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

  1. Pega una respuesta representativa que incluya registros cuyos campos difieran.
  2. Revisa la salida generada y cambia el nombre raíz si es necesario.
  3. 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.

Herramientas relacionadas

JSON a Java, JSON a TypeScript y Generador de JSON Schema.