C#
.NET y APIs

Convertidor JSON a clases C#

Genera modelos C# para respuestas de APIs.

Ir a la guía rápida

Área de trabajo

Sin registro

Los tipos se infieren de los valores de ejemplo. Revisa el código antes de usarlo.

Borra el texto, el resultado y los mensajes de validación.

Resultado

Tu resultado aparecerá aquí.
Procesamiento local: tus entradas no se envían a nuestro servidor.
DOCUMENTACIÓN

¿Qué hace esta herramienta?

Genera definiciones de clases C# a partir de un objeto JSON de muestra. Es un punto de partida para modelos de respuestas de APIs, DTO y pruebas en proyectos .NET. Crea una clase Root, clases para objetos anidados y propiedades con JsonPropertyName para conservar los nombres JSON. El procesamiento ocurre en tu navegador; revisa los tipos antes de usar el código en producción.

Cómo utilizarla

  1. Pega un objeto JSON válido y representativo de la respuesta que quieres modelar.
  2. Presiona Generar clases C# y revisa Root, las clases anidadas y los atributos JsonPropertyName.
  3. Selecciona Copiar resultado y pega las definiciones en un archivo .cs de tu proyecto .NET; ajusta el espacio de nombres según tu proyecto.
  4. Revisa nulabilidad, colecciones, números y nombres. Inicializa las referencias cuando corresponda y prueba la deserialización con JsonSerializer.

Ejemplos de entrada y salida

Pedido con objeto anidado, arreglo y valor nulo

Entrada

{"order_id":42,"total":19.95,"customer":{"name":"Ada"},"tags":["paid"],"note":null}

Salida

using System.Collections.Generic;
using System.Text.Json.Serialization;

public class Root
{
    [JsonPropertyName("order_id")]
    public int OrderId { get; set; }

    [JsonPropertyName("total")]
    public double Total { get; set; }

    [JsonPropertyName("customer")]
    public Customer Customer { get; set; }

    [JsonPropertyName("tags")]
    public List<string> Tags { get; set; }

    [JsonPropertyName("note")]
    public object? Note { get; set; }
}

public class Customer
{
    [JsonPropertyName("name")]
    public string Name { get; set; } = string.Empty;
}

Limitaciones importantes

  • Exige un objeto en la raíz; no acepta un arreglo, null ni un valor primitivo como raíz. No lee esquemas ni combina varias muestras.
  • Infiere string, bool e int para enteros de 32 bits; los demás números se convierten en double. No detecta decimal, long, fechas, enumeraciones ni GUID a partir de cadenas. El análisis JSON puede perder precisión en números grandes.
  • Un valor null genera object?: no permite conocer el tipo real. No infiere propiedades ausentes, campos obligatorios ni la nulabilidad de futuros valores.
  • Los arreglos usan solo el primer elemento no nulo para inferir List<T>. Un arreglo vacío o compuesto solo de null genera List<object>; no combina tipos ni propiedades de los demás elementos.
  • Las propiedades string se inicializan con string.Empty; las referencias a objetos y listas no se inicializan. Revisa advertencias de referencias anulables, colisiones de nombres y compatibilidad con tu configuración de C#.

Errores comunes

  • Pegar JSON inválido o una lista de objetos en la raíz. Selecciona un objeto representativo de la lista para generar el modelo.
  • Confiar en que una sola muestra describe todas las variantes de una API.
  • Usar double para importes monetarios sin revisar si el contrato necesita decimal.
  • Usar las clases generadas sin revisar nulabilidad, nombres, inicialización ni deserialización con datos reales.

Preguntas frecuentes

¿Conserva los nombres originales de las propiedades JSON?

Sí, mediante JsonPropertyName. Los identificadores C# se forman a partir de segmentos alfanuméricos y reciben sufijos cuando es necesario evitar ciertas colisiones. Revisa los nombres antes de integrar el código.

¿Cómo trata objetos anidados y arreglos?

Los objetos anidados generan clases adicionales. Los arreglos generan List<T> a partir del primer elemento no nulo, incluidos objetos anidados; los elementos posteriores no amplían el modelo.

¿Por qué un campo aparece como object?

Un valor null produce object? porque la muestra no revela su tipo. Un arreglo vacío o sin elementos no nulos produce List<object>. Sustituye esos tipos después de revisar el contrato de la API.

¿Puedo pegar el resultado directamente en .NET?

El resultado incluye las directivas using para colecciones y JsonPropertyName, y usa System.Text.Json. Es un borrador de modelo: revisa tipos, nulabilidad y advertencias del compilador, añade tu espacio de nombres y prueba la deserialización.