JSON para Classe C#
Cole um exemplo de JSON e receba de volta classes POCO C# prontas para colar em um arquivo .cs. Escolhe tipos sensatos, lida com objetos aninhados com definições de classe adicionais, suporta tipos de referência anuláveis e emite atributos System.Text.Json ou Newtonsoft.Json dependendo do seu projeto.
Como converter JSON para C#
-
1
Cole o JSON
Um único exemplo é suficiente. Múltiplos exemplos melhoram a inferência de tipos anuláveis e itens de array.
-
2
Escolha o estilo
System.Text.Json (.NET 6+) ou Newtonsoft.Json (legado). Nomes de propriedades em PascalCase com `[JsonPropertyName]` para JSON em camelCase.
-
3
Escolha a versão C# alvo
C# 10+ para registros e namespaces com escopo de arquivo, C# 8 para tipos de referência anuláveis, ou versões anteriores para máxima compatibilidade.
-
4
Copie as classes
Uma classe raiz mais classes aninhadas para cada forma de objeto, tudo em um arquivo pronto para ser adicionado ao seu projeto.
Exemplo de saída
Para entrada:
{ "firstName": "Alice", "age": 30, "emails": ["a@a.com"], "address": { "city": "Madrid" } }
Saída do System.Text.Json (C# 10+):
public class User
{
[JsonPropertyName("firstName")]
public string FirstName { get; set; } = default!;
[JsonPropertyName("age")]
public int Age { get; set; }
[JsonPropertyName("emails")]
public List<string> Emails { get; set; } = new();
[JsonPropertyName("address")]
public Address Address { get; set; } = default!;
}
public class Address
{
[JsonPropertyName("city")]
public string City { get; set; } = default!;
}
Mapeamento de tipos
| JSON | Tipo C# |
|---|---|
| string | string |
| integer | int (ou long para > int.MaxValue) |
| number (decimal) | double (ou decimal se optado) |
| boolean | bool |
| null | object? (ou mesclado com irmão) |
| data ISO-8601 | DateTime (ou DateOnly) |
| string em formato GUID | Guid |
| array de strings | List<string> |
| objeto | Classe aninhada |
Opções de atributo
- System.Text.Json (
[JsonPropertyName("foo")]), preferido para .NET 6+ e novos projetos. - Newtonsoft.Json (
[JsonProperty("foo")]), para projetos legados ou quando você precisa de recursos específicos do Newtonsoft. - Nenhum, nomes de propriedades correspondem exatamente às chaves JSON (funciona apenas se as chaves JSON já estiverem em PascalCase).
Erros comuns
- Usar
intpara um campo que pode transbordar. Se seu JSON tiver valores que excedemint.MaxValue, uselong. O gerador promove automaticamente quando vê valores grandes. - Faltando
[JsonIgnore]para propriedades computadas. Se você adicionar propriedades auxiliares à classe gerada, decore-as com[JsonIgnore]ou elas serão serializadas na saída. - Esquecendo a análise independente de cultura. Campos
decimaldevem ser desserializados comCultureInfo.InvariantCulture; System.Text.Json faz isso por padrão, Newtonsoft com configurações globais. - Confiando no gerador com um único exemplo. A nulidade e os tipos de itens de array são adivinhados a partir do que ele vê. Sempre verifique as anotações anuláveis em relação ao comportamento real da sua API.
Perguntas frequentes
Para novos projetos no .NET 6+, use System.Text.Json, é mais rápido, embutido e agora suporta quase todos os recursos que o Newtonsoft oferece. Use Newtonsoft para projetos legados ou quando precisar de seus recursos específicos (resolutores de contrato personalizados, JObject, manipulação dinâmica).
Registros são idiomáticos para DTOs imutáveis em C# 10+. Eles oferecem igualdade de valor e sintaxe concisa. Classes são melhores quando você precisa de mutação ou compatibilidade com legados. A ferramenta permite escolher qualquer um.
Se seu projeto usa tipos de referência anuláveis (C# 8+), campos observados como nulos em qualquer exemplo se tornam string?, int?, etc. Sem NRT, a nulidade é sinalizada apenas para tipos de valor (por exemplo, int?).
Arrays mistos de diferentes formas de objeto não são diretamente representáveis em C#. A ferramenta infere uma classe base comum ou (fallback) object; para arrays mistos, geralmente você deseja redesenhar o JSON.
Ferramentas relacionadas
Referência da Tabela ASCII
Tabela ASCII completa de 0 a 127 com valores decimais, hexadecimais, octais e binários e notação de referência numérica HTML, incluindo NUL, LF e DEL.
Referência de Caracteres HTML
Lista pesquisável de entidades HTML, seus códigos nomeados e numéricos, e uma cópia com um clique para caracteres e símbolos especiais.
Referência de atalhos de teclado
Pesquise atalhos padrão documentados do VS Code, Chrome e Bash com GNU Readline no macOS, Windows e Linux.
Gerador de EditorConfig
Gere um arquivo .editorconfig com suas regras de estilo e tamanho de indentação, fim de linha, charset e espaços em branco para formatação consistente entre IDEs e editores.
Validador de Email
Valide um endereço de email: verificação de sintaxe RFC 5322, consulta de registro MX em tempo real, além de detalhes de parte local, domínio e comprimento. Nenhum email é enviado.
Formatador de HTML
Formate HTML localmente no navegador com indentação de dois ou quatro espaços. O HTML não é enviado nem validado.
Ferramenta disponível em outros idiomas
- JSON vers classe C# [FR]
- JSON till C#-klass [SV]
- JSON ถึงคลาสใน C# [TH]
- تحويل JSON إلى فئة C# [AR]
- JSON ke Kelas C# [ID]
- Từ JSON đến lớp C# [VI]
- JSON을 C# 클래스로 [KO]
- JSON zu C# Klasse [DE]
- JSON a Clase C# [ES]
- JSON naar C#-klasse [NL]
- JSON na klasę C# [PL]
- JSONからC#クラスへ [JA]
- JSON в класс C# [RU]
- JSON'ten C# Sınıfına [TR]
- 从 JSON 到 C# 类 [ZH]
- JSON to C# Class [EN]
- JSON in classe C# [IT]