Transforme uma amostra de JSON em classes ou records C# para System.Text.Json ou Newtonsoft.Json
Funciona no seu navegador. Nada do que você digita é enviado a lugar nenhum. Verificado em 16 de outubro de 2026.Cole uma amostra de JSON e receba classes ou records C# com propriedades em PascalCase e a chave JSON em um atributo JsonPropertyName ou JsonProperty. Números inteiros viram int, long acima de 2.147.483.647, qualquer decimal deixa o campo como double, e um valor null ou ausente vira anulável, como int?.
Esta página foi traduzida automaticamente do original em inglês. Nenhuma pessoa revisou ainda a tradução; a versão em inglês é a que deve ser considerada. Ler o original em inglês
Cole uma amostra de JSON, como a resposta de uma API, na caixa da esquerda.
As classes C# aparecem enquanto você digita, uma por objeto, com propriedades em PascalCase e a chave JSON em um atributo em cada uma.
Escolha System.Text.Json ou Newtonsoft.Json, e records com init se preferir modelos imutáveis.
Clique em Copiar, ou em Baixar para salvar Models.cs, e desserialize na classe raiz.
O C# lê JSON em classes tipadas, e cada propriedade precisa do tipo certo e de um jeito de achar sua chave. Este conversor escreve essas classes a partir de uma amostra, então uma resposta longa de API vira um modelo que compila com uma só colagem.
Como os tipos são escolhidos.
| Valor JSON | Tipo C# |
|---|---|
| "text" | string |
| true / false | bool |
| 42 (só números inteiros) | int, ou long além de 32 bits |
| 4.5 (algum decimal visto) | double |
| null, e também um tipo | int?, string? |
| só null, ou tipos misturados | object? |
| [ ... ] | List<...> |
| { } vazio | Dictionary<string, object> |
| { ... } | uma classe própria |
Chaves e nomes. As propriedades ficam em PascalCase, então user_name vira UserName e avatar_url vira AvatarUrl. Cada propriedade leva a chave original em um atributo, porque o System.Text.Json compara nomes diferenciando maiúsculas, a menos que seja configurado de outro jeito; o Newtonsoft recebe [JsonProperty] no lugar. Uma propriedade que teria o mesmo nome da classe, o que o compilador recusa como CS0542, ganha Value no final.
Arrays de objetos. Todos os objetos de um array são unidos em uma classe, então uma chave que aparece só em alguns continua lá, como anulável, para que a ausência seja lida como null e não como 0 ou false. Dois objetos com exatamente as mesmas chaves e tipos compartilham uma classe.
Opções. Records com init geram modelos imutáveis comparados por valor. A classe raiz se chama Root, a menos que você dê outro nome. Quando o próprio JSON é um array ou um valor solto, um comentário diz em qual tipo desserializar, como List.
Cada resultado foi verificado lendo o C# de volta e conferindo 9 amostras com ele pelas regras dos serializadores. Nada do que você cola sai do navegador.
Cole uma amostra de JSON no conversor e as classes C# aparecem ao lado, uma por objeto, com um atributo JsonPropertyName em cada propriedade. Copie-as para o seu projeto e leia o JSON com JsonSerializer.Deserialize<Root>(json), ou JsonConvert.DeserializeObject<Root>(json) quando o Newtonsoft estiver escolhido.
Por padrão, o System.Text.Json compara nomes de propriedades diferenciando maiúsculas, então uma propriedade chamada UserName nunca receberia a chave user_name. O atributo indica a chave exata, o que mantém os nomes do C# em PascalCase e ainda lê o JSON sem opções de serializador nem política de nomes.
Uma propriedade é anulável quando a amostra mostra null nela, ou quando alguns objetos de um array deixam a chave de fora. Sem o ponto de interrogação, um número ausente seria lido sem aviso como 0 e uma flag ausente como false, então o tipo anulável separa ausente de zero.
Records com acessores init servem para modelos que você só lê, porque as propriedades não mudam depois da desserialização e dois records com os mesmos valores são iguais. Classes com set servem para modelos que você preenche ou edita. Os dois funcionam com System.Text.Json a partir do .NET 5 e com Newtonsoft.Json.
Números inteiros viram int, ou long quando um valor passa de 2.147.483.647, e um campo vira double assim que algum valor da amostra tem parte decimal. Valores de tipos diferentes, como um número em um item e texto em outro, viram object?, que guarda o valor JSON bruto.
Não. A conversão roda no seu navegador sem nenhuma requisição a um servidor, e o JSON não é guardado, então respostas de API com tokens ou dados pessoais ficam no seu dispositivo. Feche a aba e nada fica para trás.
Taxas e regras mudam; confira a fonte antes de confiar em um valor.
Ainda com dúvidas? Pergunte sobre Conversor de JSON para classes C# e qualquer pessoa que saiba pode responder. Não é preciso ter conta.