JSON para classes C#

Gere classes C# a partir de JSON com propriedades PascalCase, atributos [JsonPropertyName], tipos de referência anuláveis e coleções List<T>. Grátis e privado.

Usa atributos de System.Text.Json e tipos de referência anuláveis (string?, long?).

Executa totalmente no seu navegador. Seus dados nunca são enviados.

Ferramentas Relacionadas

Ver Todas

O que é JSON para C#?

Transforme um exemplo JSON em classes C# para o System.Text.Json. Cada propriedade fica em PascalCase, leva um atributo [JsonPropertyName("…")] com a chave original e usa tipos anuláveis quando o exemplo contém valores null ou ausentes.

Como usar JSON para C#

  1. Cole um exemplo JSON em Entrada JSON (ou clique em Carregar exemplo / Abrir arquivo).
  2. Defina o Nome do tipo raiz (padrão Root).
  3. Copie o código C# gerado ou clique em Baixar para salvá-lo como arquivo.

Exemplo

Entrada
{"id":1,"name":"A","tags":["x"]}
Saída
using System.Collections.Generic;
using System.Text.Json.Serialization;

public class Root
{
    [JsonPropertyName("id")]
    public long Id { get; set; }

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

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

Quando usar JSON para C#

Use-o para clientes HTTP .NET, modelos ASP.NET ou dados de teste. Para Newtonsoft.Json, troque o atributo por [JsonProperty]; para valores monetários, considere trocar double por decimal.

Como funciona JSON para C#

O exemplo é percorrido recursivamente e cada posição acumula os tipos que encontrou. Arrays de objetos são mesclados em um único tipo: uma chave ausente em alguns elementos vira opcional, uma chave que é null em algum lugar vira anulável, inteiros misturados com decimais viram um tipo de ponto flutuante e qualquer outra mistura de tipos recai em um tipo dinâmico. Objetos aninhados viram tipos nomeados próprios (PascalCase da chave, com chaves de array no singular: orders → Order), com sufixos numéricos quando os nomes colidem. A saída C# mapeia inteiros para long, decimais para double, strings para string, booleanos para bool, arrays para List<T>, objetos aninhados para classes próprias e valores dinâmicos para object?. Valores anuláveis ou opcionais recebem ?; strings não anuláveis são inicializadas com string.Empty e listas ou objetos com new(), para que o código compile sem avisos com os tipos de referência anuláveis ativados.

Casos de Uso Comuns

  • Desserializar uma resposta de API com HttpClient e System.Text.Json
  • Criar modelos de requisição/resposta para um controller ASP.NET
  • Modelar seções de configuração JSON
  • Gerar classes para triggers de Azure Functions

Perguntas Frequentes

Por que todas as propriedades têm anotação?

O atributo mantém a chave JSON exata mesmo quando o nome em C# é diferente, então a serialização funciona nos dois sentidos independentemente da política de nomes.

Por que double em vez de decimal?

O JSON não tem tipo decimal; o double corresponde ao que o parser produz. Use decimal para valores monetários.

Funciona com Newtonsoft.Json?

Sim, depois de trocar [JsonPropertyName] por [JsonProperty] e ajustar a diretiva using.

Explore mais categorias