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. 1

    Cole o JSON

    Um único exemplo é suficiente. Múltiplos exemplos melhoram a inferência de tipos anuláveis e itens de array.

  2. 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. 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. 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 int para um campo que pode transbordar. Se seu JSON tiver valores que excedem int.MaxValue, use long. 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 decimal devem ser desserializados com CultureInfo.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

Ferramenta disponível em outros idiomas