← Inicio de herramientas|

Generador de Records y Clases C# .NET a partir de JSON (System.Text.Json y Newtonsoft)

100% en el cliente

Convierte payloads JSON en records, clases y structs fuertemente tipados en C#, compatibles con los atributos de System.Text.Json [JsonPropertyName] y Newtonsoft.Json.

Código C# generado
using System;
using System.Collections.Generic;
using System.Text.Json.Serialization;

namespace GeneratedModels
{
    public record OrderPayload
    {
        [JsonPropertyName("orderId")]
        public string? OrderId { get; init; }
    
        [JsonPropertyName("customer")]
        public Customer? Customer { get; init; }
    
        [JsonPropertyName("items")]
        public List<Item?>? Items { get; init; }
    
        [JsonPropertyName("billingAddress")]
        public BillingAddress? BillingAddress { get; init; }
    
        [JsonPropertyName("totalAmount")]
        public double TotalAmount { get; init; }
    
        [JsonPropertyName("currency")]
        public string? Currency { get; init; }
    
        [JsonPropertyName("isDelivered")]
        public bool IsDelivered { get; init; }
    
        [JsonPropertyName("deliveryNotes")]
        public object? DeliveryNotes { get; init; }
    }

    public record BillingAddress
    {
        [JsonPropertyName("street")]
        public string? Street { get; init; }
    
        [JsonPropertyName("city")]
        public string? City { get; init; }
    
        [JsonPropertyName("stateOrProvince")]
        public string? StateOrProvince { get; init; }
    
        [JsonPropertyName("postalCode")]
        public string? PostalCode { get; init; }
    
        [JsonPropertyName("country")]
        public string? Country { get; init; }
    }

    public record Item
    {
        [JsonPropertyName("sku")]
        public string? Sku { get; init; }
    
        [JsonPropertyName("name")]
        public string? Name { get; init; }
    
        [JsonPropertyName("quantity")]
        public int Quantity { get; init; }
    
        [JsonPropertyName("unitPrice")]
        public double UnitPrice { get; init; }
    
        [JsonPropertyName("discounts")]
        public List<int>? Discounts { get; init; }
    
        [JsonPropertyName("inStock")]
        public bool InStock { get; init; }
    }

    public record Customer
    {
        [JsonPropertyName("id")]
        public int Id { get; init; }
    
        [JsonPropertyName("fullName")]
        public string? FullName { get; init; }
    
        [JsonPropertyName("email")]
        public string? Email { get; init; }
    
        [JsonPropertyName("isPremiumMember")]
        public bool IsPremiumMember { get; init; }
    
        [JsonPropertyName("registeredAt")]
        public DateTimeOffset RegisteredAt { get; init; }
    }
}
Clases/Records generados
4 records
Propiedades totales
24 properties mapped
Tamaño del payload JSON
.NET 8+ / C# 12 ready
Referencia técnica y guía de arquitectura

Generador de Records y Clases C# .NET a partir de JSON (System.Text.Json y Newtonsoft) — Guía de referencia

Convierte payloads JSON en records, clases y structs fuertemente tipados en C#, compatibles con los atributos de System.Text.Json [JsonPropertyName] y Newtonsoft.Json.

Parámetros clave y controles

targetTypestring (enum: record | class | struct)

Define el modelo de declaración en C#. 'record' genera records posicionales inmutables con descriptores de acceso 'init-only', 'class' crea tipos por referencia estándar y 'struct' genera tipos por valor ligeros.

serializerLibrarystring (enum: System.Text.Json | Newtonsoft.Json | None)

Selecciona el conjunto de atributos de serialización con el que decorar las propiedades, tales como [JsonPropertyName("...")] para .NET moderno o [JsonProperty("...")] para Json.NET.

nullabilityHandlingstring (enum: nullableReferenceTypes | optionalPrimitives | nonNullable)

Configura el formato de tipos por referencia que admiten valores nulos (NRT) de C# 8+, marcando atributos JSON ausentes o nulos con '?' (p. ej., string?, int?) o forzando tipos estrictamente no nulables.

namingConventionstring (enum: PascalCase | camelCase | preserve)

Determina cómo se formatean los nombres de propiedades en los identificadores generados de C#, mapeando la clave JSON original a través de los atributos de serialización.

Consejos profesionales y mejores prácticas

Errores comunes y solución de problemas

System.Text.Json lanza JsonException: 'The JSON value could not be converted' ante cadenas vacías en campos numéricos o de tipo DateTime.

Implementa un JsonConverter personalizado (como un convertidor flexible para int o DateTime) o configura el generador para emitir tipos nulables (int?, DateTime?) junto con un preprocesador de cadenas vacías o un `JsonConverter<T>` a medida.

Colisión en los nombres de las clases C# generadas al analizar arrays JSON anidados que contienen subobjetos anónimos con nombres de clave idénticos.

Habilita el prefijado jerárquico de tipos o el aislamiento por namespaces en la configuración del generador para asignar identificadores de tipo únicos (p. ej., OrderBillingAddress frente a UserBillingAddress) en lugar de sufijos genéricos de colisión.

Las propiedades con palabras clave reservadas de C# (p. ej., 'params', 'class', 'event', 'object') provocan errores de compilación en el código generado.

Escapa los identificadores reservados usando el prefijo '@' (p. ej., `@class`, `@event`), manteniendo el mapeo exacto de JSON dentro de `[JsonPropertyName("class")]` o `[JsonProperty("class")]`.

Preguntas frecuentes (FAQ)

▼

▼

▼

▼

Herramientas y utilidades relacionadas

Todas las herramientas →