Você está sem internet. As ferramentas que você já abriu continuam funcionando.
JSON para classes C#
Cole um JSON e receba classes ou records C# com propriedades, coleções List<T> e tipos anuláveis. Atributos JsonPropertyName ou JsonProperty mantêm as chaves originais do JSON.
Grátis e privado. Tudo funciona no seu navegador e nada é enviado.
Relatar um problema
Como funciona
Cole o seu JSONCole uma resposta da sua API ou abra um arquivo .json. Use Exemplo para ver como funciona.
Ajuste as opçõesDefina o nome do tipo principal e as opções desta linguagem. O código se atualiza enquanto você digita.
Copie ou baixeCopie o código para o seu projeto ou baixe como arquivo.
Pronto para System.Text.Json e Newtonsoft
As propriedades são escritas em PascalCase. Por padrão, o System.Text.Json diferencia maiúsculas e minúsculas nos nomes, então o gerador acrescenta um atributo JsonPropertyName sempre que o nome em C# difere da chave. Com o Newtonsoft.Json, que ignora maiúsculas e minúsculas, o atributo só entra quando o nome muda de verdade, por exemplo de user_name para UserName.
Campos opcionais e null viram tipos anuláveis como int? ou string?, o que combina com projetos que têm nullable reference types ativado. Strings e listas obrigatórias podem começar com um valor vazio para o compilador não reclamar. Inteiros acima do limite de 32 bits viram long, datas ISO viram DateTime, ou DateTimeOffset quando trazem fuso horário.
Perguntas frequentes
Class ou record?
Records trazem igualdade por valor e propriedades init only, o que combina com DTOs. Classes com get e set são a escolha clássica e funcionam com qualquer serializador e versões antigas do .NET.
Meu JSON é enviado para algum lugar?
Não. Os tipos são gerados no seu navegador. Respostas de API com dados de clientes ou chaves nunca saem do seu dispositivo.
Como os campos opcionais são detectados?
Se o JSON tem uma lista de objetos, todos os objetos são comparados. Um campo que falta em pelo menos um objeto é marcado como opcional. Com um único objeto, todos os campos são tratados como obrigatórios.
O que acontece com campos que são sempre null?
Não dá para saber o tipo pelo exemplo, então o campo recebe um tipo genérico como unknown, object, Any ou JsonElement. Inclua um exemplo em que o campo tenha valor para obter um tipo preciso.
Por que o meu 1.0 virou número decimal?
A ferramenta olha como o número está escrito. 1.0 ou 2.5 viram double ou float, 1 vira inteiro. Se um campo é inteiro em alguns itens e decimal em outros, o tipo decimal é usado.
Posso usar o resultado em código de produção?
Sim, o código compila como está nas configurações mais comuns. Revise nomes e tipos antes do commit, porque um exemplo nunca mostra todos os valores possíveis.
Funciona sem internet?
Sim. Depois que você abre a página uma vez, ela continua funcionando sem conexão com a internet.
Solte o arquivo para ver o que dá para fazer com ele