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
Gerador de cards CSS
Crie um card com seu título, texto e link opcional. Ajuste cores, borda, espaçamento, sombra e efeito ao passar o mouse. Depois copie ou baixe o HTML e o CSS.
Gerador de textura de ruído
Gere uma textura de ruído em SVG que se repete sem emendas, com opacidade, frequência do grão, tipo de ruído e cor de fundo ajustáveis, e copie o CSS já pronto.
Gerador de Configuração Webpack
Crie um webpack.config.js para webpack 5 a partir de um formulário curto: defina o entry, a pasta de saída e o modo, e ative TypeScript, Babel, um loader CSS, HtmlWebpackPlugin e um servidor de desenvolvimento.
Gerador de Docker Compose
Gere um docker-compose.yml a partir de definições de serviços com imagem, portas e volumes, com padrões de boas práticas.
Conversor de base numérica
Converta números entre binário, octal, decimal, hexadecimal e qualquer base personalizada de 2 a 36, com o detalhamento posicional.
Conversor de Tamanho de Arquivo
Converta entre bytes, KB, MB, GB, TB e as unidades binárias IEC (KiB, MiB, GiB, TiB), combinando decimal e binário como preferir.
Ferramenta disponível em outros idiomas
- JSONからC#クラスへ [JA]
- JSON till C#-klass [SV]
- JSON ke Kelas C# [ID]
- JSON을 C# 클래스로 [KO]
- JSON vers classe C# [FR]
- JSON naar C#-klasse [NL]
- Từ JSON đến lớp C# [VI]
- JSON zu C# Klasse [DE]
- تحويل JSON إلى فئة C# [AR]
- JSON ถึงคลาสใน C# [TH]
- JSON na klasę C# [PL]
- JSON a Clase C# [ES]
- JSON in classe C# [IT]
- JSON to C# Class [EN]
- JSON в класс C# [RU]
- JSON'ten C# Sınıfına [TR]
- 从 JSON 到 C# 类 [ZH]