Linq to JSON C#

Como trabalhar de forma simples com objetos JSON no server side?

Procurando uma resposta para esta pergunta encontrei um projeto que tem como fruto uma biblioteca em .NET que manipula de forma simples dados em formato de JSON,

o projeto se chama Json.NET e pode ser baixado em http://www.codeplex.com/Json.

Suas principais caracteristicas são um serializador JSON flexível para converter rapidamente. NET para JSON e de volta, e LINQ to JSON para leitura e escrita JSON.

Para isso primeiramente devemos adicionar referência a dll do projeto, então podemos partir para alguns exemplos:

Serializando

Serializando um objeto
  1. Pessoa pessoa = new Pessoa { Nome = “Rodolfo”,Sobrenome= “Fadino” ,Idade = 20 };
  2. string jsonpessoa = JsonConvert.SerializeObject(pessoa, Formatting.Indented);

O resultado exibido será uma string:

{ “Nome”: “Rodolfo”, “Sobrenome”: “Fadino”, “Idade”: 20 }

Serializando um List
  1. List<Pessoa> pessoas = new List<Pessoa>();
  2. Pessoa rodolfo = new Pessoa { Nome = “Rodolfo”,Idade = 20 };
  3. Pessoa alexandre = new Pessoa { Nome = “Alexandre”, Idade = 21 };
  4. Pessoa eduardo = new Pessoa { Nome = “Eduardo”,  Idade = 22 };
  5. Pessoa taura = new Pessoa { Nome = “Taurã”,  Idade = 23 };
  6. pessoas.Add(rodolfo);
  7. pessoas.Add(alexandre);
  8. pessoas.Add(eduardo);
  9. pessoas.Add(taura);
  10. string jsonpessoas = JsonConvert.SerializeObject(pessoas, Formatting.Indented);
Code Snippet
  1. Pessoa pessoa = new Pessoa { Nome = “Rodolfo”,Sobrenome= “Fadino” ,Idade = 20 };
  2. string jsonpessoa = JsonConvert.SerializeObject(pessoa, Formatting.Indented);
  3. lblJson.Text = jsonpessoa;

O resuldao exibido será uma string:

[ { "Nome": "Rodolfo", "Idade": 20 }, { "Nome": "Alexandre", "Idade": 21 }, { "Nome": "Eduardo", "Idade": 22 }, { "Nome": "Taurã", "Idade": 23 } ]

Agora podemos passar para o processo inverso, através de uma string no formato de um JSON iremos utilizar Linq to JSON

Linq to JSON

Linq to JSON
  1. string json = @”{
  2. “”Nome”": “”Rodolfo”",
  3. “”Idade”": 20,
  4. “”Certificacoes”": [
  5. ""MCP"",
  6. ""MCTS"",
  7. ""MCPD""
  8. ]
  9. }”;
  10. JObject objRodolfo = JObject.Parse(json);
  11. string Nome = (string)objRodolfo["Nome"];
  12. //Rodolfo
  13. JArray certificacoes = (JArray)objRodolfo["Certificacoes"];
  14. //[ "MCP", "MCTS", "MCPD" ]
  15. string certificacao1 = (string)certificacoes[1];
  16. //MCTS

Outra coisa que podemos fazer são consultas Linq

Code Snippet
  1. JObject objPessoas = JObject.Parse(@”{
  2. “”Pessoas”" :[
  3. {""Nome"":""Nome1"",
  4. ""Idade"":20,
  5. ""Profissao"":""Desenvolvedor""},
  6. {""Nome"":""Nome2"",
  7. ""Idade"":20,
  8. ""Profissao"":""Desenvolvedor""},
  9. {""Nome"":""Nome3"",
  10. ""Idade"":20,
  11. ""Profissao"":""Desenvolvedor""},
  12. {""Nome"":""Nome4"",
  13. ""Idade"":20,
  14. ""Profissao"":""Desenvolvedor""}
  15. ]}”);
  16. IList<string> pessoas = objPessoas["Pessoas"].Select(p => (string)p["Nome"]).ToList();
  17. lblJson.Text = pessoas.First();
  18. //Nome1

Obrigado

qualquer duvida estou a disposição.

Rodolfo

This entry was posted in JavaScript and tagged . Bookmark the permalink.

3 Responses to Linq to JSON C#

  1. Mandi Wigen says:

    Ótimo post amigo, muito legal.! parabens

  2. Muito interessante… Parabens pelo site. =]

  3. Ótimo post amigo, muito legal.! parabens

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>