Json.NET: Linq to Json
Por Claudio Ulisse30/05/2008 – 14:42
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
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 must be logged in to post a comment.