in C#

Trabalhando com JSON e dynamic com C#

Um dos melhores formatos para transmitir dados na web é o Json (JavaScript Object Notation),  já que é nativo do JavaScript e possui menor overhead de separadores que em um XML por exemplo, alem disso, é facilmente tratado por funções JS.

Cada vez mais a maioria de projetos utiliza JSON em suas API’s, integrações ou em outras comunicações.

A idéia deste post é demonstrar algumas facilidades e maneiras de trabalhar com JSON utilizando dynamic e C#.

Para isso precisaremos instalar e referenciar a namespace do System.Json, que pode ser incluida através de Nuget:

(Install-Package System.Json)

 

Criando JSON

Com o dynamic (http://msdn.microsoft.com/en-us/library/system.dynamic.dynamicobject.aspx) é possivel extender a classe JsonObject (http://msdn.microsoft.com/en-us/library/system.json.jsonobject(v=vs.110).aspx) para criarmos com muita facilidade nosso objetos JSON.

Ex:

dynamic usuario = new JsonObject();
usuario.nome = "Rodolfo";
usuario.sexo = "m";
usuario.idade = 22;

dynamic certificacoes = new JsonArray();

dynamic certificacao1 = new JsonObject();
certificacao1.titulo = "MCPD";
certificacao1.id = 1;

dynamic certificacao2 = new JsonObject();
certificacao2.titulo = "MCTS";
certificacao2.id = 2;

dynamic certificacao3 = new JsonObject();
certificacao3.titulo = "MCP";
certificacao3.id = 3;

certificacoes.Add(certificacao1);
certificacoes.Add(certificacao2);
certificacoes.Add(certificacao3);

usuario.certificacoes = certificacoes;

Console.WriteLine(usuario.ToString());

Terá criado a seguinte string

{"nome":"Rodolfo","sexo":"m","idade":22,"certificacoes":
[{"titulo":"MCPD","id":1},{"titulo":"MCTS","id":2},{"titulo":"MCP","id":3}]}

 

Lendo strings com JSON

Outra função fundamental é converter strings de JSON em objetos que podem ser trabalhados, para isso, neste exemplo eu utilizarei o dynamic e o JsonValue (http://msdn.microsoft.com/en-us/library/system.json.jsonvalue(v=vs.110).aspx)

Ex:

var jsonString = "{\"nome\":\"Rodolfo Fadino\",\"idade\":22, \"sexo\":\"M\"}";
dynamic jsonTratado = JsonValue.Parse(jsonString);

string Nome = jsonTratado.nome;
char Sexo = jsonTratado.sexo;
int idade = jsonTratado.idade;

 

Abaixo seguem os link’s da MSDN

http://msdn.microsoft.com/en-us/library/system.json(v=vs.110).aspx

http://msdn.microsoft.com/en-us/library/system.dynamic.aspx

 

Bom espero que este post tenha sido util,

estou a disposição para dúvidas, críticas e sugestões

 

abs

Rodolfo

  • Paulo Jorge

    Obrigado isso foi bacana pra mim.

  • Daniel Tietz Roda

    E se quisesse puxar os 3 “títulos”?

  • Diego Locatelli Tadeu

    Caraca muito legal. Valeu!