Como criar uma classe no Visual Studio a partir de um JSON

Como criar uma classe no Visual Studio a partir de um JSON

Nada mais chato do que ficar fazendo trabalho repetitivo, então ninguém merece ficar criando classes gigantes, mas se você tiver o JSON da classe tenho boas notícias, hoje vou ensinar como criar um classe no Visual Studio a partir de um JSON.

Muitas vezes é preciso criar classes de contrato que já tem o JSON escrito.

E isso dependendo do tamanho do JSON pode levar muito tempo.

Mas para nossa alegria existe uma funcionalidade no Visual Studio para nos ajudar.

A funcionalidade é o colar especial.

Porém para que ela esteja disponível é preciso que tenha o Visual Studio 2019 ou mais recente instalado.

Como criar uma classe no Visual Studio a partir de um JSON – Passo a Passo

O primeiro passo é ter um JSON.

É importante que seja um JSON válido.

Mas não faz diferença se o JSON está formatado ou não.

Segue um exemplo de JSON:

{
    "glossary": {
        "title": "example glossary",
		"GlossDiv": {
            "title": "S",
			"GlossList": {
                "GlossEntry": {
                    "ID": "SGML",
					"SortAs": "SGML",
					"GlossTerm": "Standard Generalized Markup Language",
					"Acronym": "SGML",
					"Abbrev": "ISO 8879:1986",
					"GlossDef": {
                        "para": "A meta-markup language, used to create markup languages such as DocBook.",
						"GlossSeeAlso": ["GML", "XML"]
                    },
					"GlossSee": "markup"
                }
            }
        }
    }
}

Depois de validar o JSON é preciso copia-lo e então abrir o Visual Studio no projeto que queira criar a classe.

A criação da classe é feita no arquivo que está aberto no Visual Studio.

Então sugiro que crie o arquivo da classe primeiro.

Após isso é preciso ir em Editar -> Colar Especial -> Colar JSON como classes.

Como criar uma classe no Visual Studio a partir de um JSON - Passo a passo
Como criar uma classe no Visual Studio a partir de um JSON – Passo a passo

Se por algum motivo ocorrer um problema na cópia (se o JSON não for válido) o seguinte erro vai aparecer na tela:

Agora, se o JSON estiver válido teremos a seguinte saída:

Como criar uma classe no Visual Studio a partir de um JSON - Erro
Como criar uma classe no Visual Studio a partir de um JSON – Erro

Entendendo mais no detalhe a saída podemos ver que sempre é feita a criação de uma classe inicial.

public class Rootobject
    {
        public Glossary glossary { get; set; }
    }

    public class Glossary
    {
        public string title { get; set; }
        public Glossdiv GlossDiv { get; set; }
    }

    public class Glossdiv
    {
        public string title { get; set; }
        public Glosslist GlossList { get; set; }
    }

    public class Glosslist
    {
        public Glossentry GlossEntry { get; set; }
    }

    public class Glossentry
    {
        public string ID { get; set; }
        public string SortAs { get; set; }
        public string GlossTerm { get; set; }
        public string Acronym { get; set; }
        public string Abbrev { get; set; }
        public Glossdef GlossDef { get; set; }
        public string GlossSee { get; set; }
    }

    public class Glossdef
    {
        public string para { get; set; }
        public string[] GlossSeeAlso { get; set; }
    }

E então para cada objeto complexo dentro do JSON é feita a criação de uma classe.

Já para propriedades que são objetos simples é feita a conversão para os tipos básicos (inteiro, string, data por exemplo).

Vale lembrar que o nome das propriedades será exatamente igual ao que está no JSON, não é feita nenhuma conversão para qualquer padrão.

Caso você tenha uma versão mais antiga do Visual Studio é possível fazer o mesmo processo usando o site JSON2CSHARP.

Esse site inclusive tem mais funcionalidades que o próprio Visual Studio, como conversão na formatação e adição de namespaces.

Agora se você quiser mais dicas de .Net como essa confira aqui no nosso blog.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *