Ir para o conteúdo
Totalmente local

JSON para classe C#

Transforme uma amostra JSON em classes C# prontas para usar.

Entrada
Saída

JSON para classe C#

Copie um objeto JSON ou uma matriz de objetos JSON e esta ferramenta infere a forma e gera as classes C# correspondentes. Foi criada para a tarefa comum de transformar uma resposta de API, um arquivo de configuração ou uma carga útil de amostra em modelos fortemente tipados sem escrever manualmente.

As opções controlam como o código gerado fica. Escolha atributos para System.Text.Json ([JsonPropertyName]), Newtonsoft.Json ([JsonProperty]) ou nenhum — os atributos são adicionados automaticamente sempre que a renomeação PascalCase altera um nome de propriedade, então a chave JSON original nunca é perdida. Escolha propriedades ou campos, ative ou desative tipos de referência anuláveis, gere um record em vez de uma class e escolha List<T> ou T[] para matrizes. Objetos aninhados tornam-se suas próprias classes nomeadas segundo a propriedade que os contém, e uma declaração de espaço de nomes envolve tudo quando você fornece uma.

A ferramenta mescla as formas de cada elemento quando você cola uma matriz, portanto uma chave que está presente apenas em alguns itens torna-se uma propriedade anulável opcional em vez de desaparecer silenciosamente. Os números permanecem números inteiros (int, ampliados para long para valores maiores) a menos que um ponto decimal force double, e um valor que é sempre nulo torna-se um objeto anulável. Os nomes de classe e propriedade são sanitizados e desduplicados automaticamente, portanto as chaves JSON inválidas ou repetidas nunca produzem C# quebrado.

Tudo é executado localmente no seu navegador — seu JSON nunca é carregado ou enviado para um servidor, o que importa quando a amostra vem de uma API privada ou contém dados reais do cliente. Copie as classes geradas, baixe-as como arquivo .txt ou envie a saída de volta para a entrada para refiná-la ainda mais.

FAQ

Como ele decide entre int, long e double?
Números inteiros tornam-se int, ou long quando excedem o intervalo de 32 bits. Qualquer número com um ponto decimal ou que discorde de um número inteiro em outro lugar da matriz torna-se double.
O que acontece com uma propriedade que está faltando em alguns itens de matriz?
É gerada como uma propriedade anulável. Com tipos de referência anuláveis ativados, isso adiciona um "?"; o mesmo se aplica a um valor que é sempre nulo.
Ele pode manter a chave JSON original ao renomear uma propriedade?
Sim. Sempre que a renomeação PascalCase ou a sanitização altera um nome de propriedade, a chave original é preservada em um atributo [JsonPropertyName] ou [JsonProperty], dependendo do estilo de atributo que você escolher.
Ele gera classes aninhadas para objetos aninhados?
Sim. Cada objeto aninhado obtém sua própria classe nomeada segundo a propriedade que o contém, e matrizes de objetos geram uma classe nomeada segundo a forma singular dessa propriedade.
Meu JSON é enviado para algum lugar?
Não. A conversão é executada totalmente no seu navegador — seu JSON nunca deixa seu dispositivo.