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 TodasO 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#
- Cole um exemplo JSON em Entrada JSON (ou clique em Carregar exemplo / Abrir arquivo).
- Defina o Nome do tipo raiz (padrão
Root). - Copie o código C# gerado ou clique em Baixar para salvá-lo como arquivo.
Exemplo
{"id":1,"name":"A","tags":["x"]} 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.