Json.NET: Linq to Json

Amigos,

enfim um exemplo sobre como utilizar a biblioteca Json.NET para interagir com Linq. Sinceramente achei essa biblioteca muito boa, simples,mas infelizmente não tem suporte pela “comunidade” como seria desejável, então mesmo com o idealizador(James Newtonking) muito ativo não é uma escolha estratégica, utilizar algo que em futuro podeira não ter mais suporte…mas pelo resto achei uma biblioteca bacana.

Aqui temos uma visão geral do projeto
projeto.JPG

Nesse caso o banco de dados possui 2 tabelas ,Produtora e Dvd, que são carregadas em memoria com um dataset. O Linq mapeia as tabela e cria um arquivo DataClasses onde são criadas 2 entidades, uma para cada tabela.

O exemplo monstra como criar um objeto Json a partir de uma lista com Linq e como fazer uma query no Json, sempre via Linq


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

namespace linqjson
{
  class Program
  {
    static void Main(string[] args)
    {   //retornando uma lista de dvds
      List dvdList = new DataClasses().Dvds.ToList();
      //criando um objeto Json
      JObject jDvd = new JObject
        (
         new JProperty("lista de filmes",
         new JArray
         (
           //consulta para retornar todos os dvds do objeto dvdList
          from dvd in dvdList
          select new JObject
          (
           new JProperty("Titulo", dvd.Titulo),
           new JProperty("Ator", dvd.Ator),
           new JProperty("Diretor", dvd.Diretor),
           new JProperty("Produtora", dvd.Produtora.Nacionalidade)
          )
         )
        )
       );

Console.WriteLine(jDvd.ToString());
// criando um objeto IEnumerable com a lista  de filmes com a produtora da Italia
var filmItaliano = from j in jDvd["lista de filmes"].Children()
                   where j.Value("Produtora").Equals("Italia")
                   select j.Value("Titulo");
    foreach (var f in filmItaliano)
    {
    Console.WriteLine(f.ToString());
    }
  }
 }
}
o resultado na console vai ser esse
 {
  "lista de filmes": [
    {
      "Titulo": "Ultimo imperador",
      "Ator": null,
      "Diretor": "Bertolucci",
      "Produtora": "Italia"
    },
    {
      "Titulo": "007",
      "Ator": "Sean Connery",
      "Diretor": null,
      "Produtora": "EUA"
    },
    {
      "Titulo": "Fantozzi",
      "Ator": "Paolo Villaggio",
      "Diretor": "Villaggio",
      "Produtora": "Italia"
    },
    {
      "Titulo": "Amarcord",
      "Ator": "Fellini",
      "Diretor": "fellini",
      "Produtora": "Italia"
    }
  ]
}
-------Lista de Titulos--------
Ultimo imperador
Fantozzi
Amarcord

Uma outra abilidade dessa biblioteca é converter Json para XML e viceversa ,
mas isso não testei. A sacada foi o Linq para queries em Json. Existe outra
biblioteca mais conhecida a Jayrock ,essa tem suporte para ASP.NET
Vai ser o meu proximo teste.

Abçs

You can leave a response, or trackback from your own site.

Leave a Reply

You must be logged in to post a comment.

Subscribe to RSS Feed Me siga no Twitter!