← Início das Ferramentas|

Gerador de Records e Classes C# .NET a partir de JSON (System.Text.Json e Newtonsoft)

100% no Cliente

Converta payloads JSON em records, classes e structs C# fortemente tipados com suporte a atributos do System.Text.Json ([JsonPropertyName]) e Newtonsoft.Json.

Código C# Gerado
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; }
    }
}
Classes/Records Gerados
4 records
Total de Propriedades
24 properties mapped
Tamanho do Payload JSON
.NET 8+ / C# 12 ready
Referência técnica e guia de arquitetura

Gerador de Records e Classes C# .NET a partir de JSON (System.Text.Json e Newtonsoft) — Guia de referência

Converta payloads JSON em records, classes e structs C# fortemente tipados com suporte a atributos do System.Text.Json ([JsonPropertyName]) e Newtonsoft.Json.

Parâmetros principais e controles

targetTypestring (enum: record | class | struct)

Define o modelo de declaração do C#. 'record' gera records posicionais imutáveis com propriedades init-only; 'class' cria tipos por referência padrão; e 'struct' produz tipos por valor leves.

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

Seleciona o conjunto de atributos de serialização para decorar as propriedades, como [JsonPropertyName("...")] para .NET moderno ou [JsonProperty("...")] para Json.NET.

nullabilityHandlingstring (enum: nullableReferenceTypes | optionalPrimitives | nonNullable)

Configura a formatação de Nullable Reference Types (NRT) do C# 8+, anotando propriedades ausentes ou nulas no JSON com '?' (ex.: string?, int?) ou aplicando estritamente tipos não anuláveis.

namingConventionstring (enum: PascalCase | camelCase | preserve)

Determina a convenção de nomenclatura dos identificadores C# gerados, mapeando a chave JSON original por meio dos atributos de serialização.

Dicas profissionais e melhores práticas

Problemas comuns e solução de problemas

System.Text.Json lança JsonException: 'The JSON value could not be converted' ao receber strings vazias para campos numéricos ou DateTime.

Implemente um `JsonConverter` personalizado (como um conversor tolerante para int ou DateTime) ou configure o gerador para emitir tipos anuláveis (int?, DateTime?) acompanhados de um pré-processador de strings vazias ou `JsonConverter<T>` customizado.

Conflito de nomes em classes C# geradas ao analisar arrays JSON aninhados contendo subobjetos anônimos com chaves idênticas.

Habilite o prefixo hierárquico de tipos ou o escopo por namespace nas configurações do gerador para atribuir identificadores exclusivos (ex.: OrderBillingAddress vs. UserBillingAddress) em vez de sufixos numéricos genéricos.

Propriedades com palavras-chave reservadas do C# (ex.: 'params', 'class', 'event', 'object') geram erros de compilação no código gerado.

Faça o escape de identificadores reservados utilizando o prefixo '@' (ex.: `@class`, `@event`), preservando o mapeamento exato da chave JSON dentro de `[JsonPropertyName("class")]` ou `[JsonProperty("class")]`.

Perguntas frequentes (FAQ)

▼

▼

▼

▼

Ferramentas e utilitários relacionados

Todas as ferramentas →