Usuário com melhor resposta
Windows Phone consumindo JSON

Pergunta
-
Pessoal, estou criando uma aplicação que puxa iformações de um Json, sendo que estou tendo problemas na hora de transformar o Json em um Objeto no C#.
Como nunca tive necessidade de usar o Json, estou tendo dificuldades e gostaria da ajuda de vocês.
O retorno do meu Json é este
{"conteudos":[{"editoria_principal":"fluminense","editorias":[],"permalink":"http://globoesporte.globo.com/futebol/times/fluminense/noticia/2011/11/liberados-para-preparacao-fisica-gum-e-digao-so-voltam-em-2012.html","primeira_publicacao":"November 29, 2011 19:05:02","site":"globoesporte","subtitulo":"Em fase final de recupera\u00e7\u00e3o de les\u00f5es nas coxas, zagueiros deram voltas ao redor do gramado das Laranjeiras nesta ter\u00e7a-feira","thumbnail":"http://s.glbimg.com/es/ge/f/90x68/2011/11/29/gum-e-digao_edgardmaciel1024.jpg","titulo":"Liberados para a prepara\u00e7\u00e3o f\u00edsica, Gum e Dig\u00e3o s\u00f3 voltam em 2012","ultima_atualizacao":null},{"editoria_principal":"fluminense","editorias":[],"permalink":"http://globoesporte.globo.com/futebol/times/fluminense/noticia/2011/11/em-dia-de-treinamento-de-reservas-gamba-rouba-cena-nas-laranjeiras.html","primeira_publicacao":"November 29, 2011 16:58:50","site":"globoesporte","subtitulo":"Animal acompanhou toda a atividade da arquibancada do clube. Titulares s\u00f3 voltam a treinar nesta quarta-feira","thumbnail":"http://s.glbimg.com/es/ge/f/90x68/2011/11/29/gamba-laranjeiras-gcom-2.jpg","titulo":"Em dia de treinamento de reservas, gamb\u00e1 rouba a cena nas Laranjeiras","ultima_atualizacao":null},{"editoria_principal":"fluminense","editorias":[],"permalink":"http://globoesporte.globo.com/futebol/times/fluminense/noticia/2011/11/de-ferias-conca-desembarca-no-rio-e-ira-visitar-laranjeiras-em-breve.html","primeira_publicacao":"November 29, 2011 16:15:03","site":"globoesporte","subtitulo":"Campe\u00e3o nacional pelo Guangzhou Evergrande-CHI, \u00eddolo da torcida tricolor deve rever seus ex-companheiros de Fluminense at\u00e9 o fim desta semana","thumbnail":"http://s.glbimg.com/es/ge/f/90x68/2011/08/06/conca_paulao_guanghoz02_div.jpg","titulo":"De f\u00e9rias, Conca desembarca no Rio \ne ir\u00e1 visitar as Laranjeiras em breve","ultima_atualizacao":null},{"editoria_principal":"redacao sportv","editorias":[],"permalink":"http://globoesporte.globo.com/sportv/programas/redacao-sportv/noticia/2011/11/classicos-decisivos-roubam-rivalidade-dos-estaduais-diz-jornalista.html","primeira_publicacao":"November 29, 2011 14:05:36","site":"globoesporte","subtitulo":"Editor de 'O Globo', Toninho Nascimento cita exemplo de Atl\u00e9tico-MG x Cruzeiro, no qual Galo pode rebaixar o rival na \u00faltima rodada do Brasileir\u00e3o","thumbnail":null,"titulo":"'Cl\u00e1ssicos decisivos roubam rivalidade dos Estaduais', diz jornalista ","ultima_atualizacao":null},{"editoria_principal":"fluminense","editorias":[],"permalink":"http://globoesporte.globo.com/futebol/times/fluminense/noticia/2011/11/flu-define-local-da-pre-temporada-de-2012-e-pensa-em-reforcos-pontuais.html","primeira_publicacao":"November 29, 2011 11:13:54","site":"globoesporte","subtitulo":"Tricolor deixa praticamente fechada a prepara\u00e7\u00e3o em Mangaratiba e come\u00e7a a tocar a reformula\u00e7\u00e3o de seu elenco visando o Carioca e a Libertadores","thumbnail":"http://s.glbimg.com/es/ge/f/90x68/2011/09/11/ciro_pho62.jpg","titulo":"Flu define local da pr\u00e9-temporada de 2012 e pensa em 'refor\u00e7os pontuais'","ultima_atualizacao":null},{"editoria_principal":"brasileir\u00e3o s\u00e9rie a","editorias":[],"permalink":"http://globoesporte.globo.com/futebol/brasileirao-serie-a/noticia/2011/11/armandao-fred-fica-uma-boa-atuacao-de-ser-o-craque-do-brasileiro.html","primeira_publicacao":"November 29, 2011 08:15:02","site":"globoesporte","subtitulo":"Diferen\u00e7a entre o atacante do Flu e o l\u00edder Neymar cai para 0,03 ponto. Joia do Santos folga na \u00faltima rodada e abre caminho para o tricolor","thumbnail":"http://s.glbimg.com/es/ge/f/90x68/2011/11/29/armandao_rodada37_4.png","titulo":"Armand\u00e3o: Fred fica a uma boa atua\u00e7\u00e3o de ser o craque do Brasileiro","ultima_atualizacao":null},{"editoria_principal":"fluminense","editorias":[],"permalink":"http://globoesporte.globo.com/futebol/times/fluminense/noticia/2011/11/peter-siemsen-elogia-trabalho-de-abel-e-afirma-valeu-pena-espera-lo.html","primeira_publicacao":"November 29, 2011 08:05:02","site":"globoesporte","subtitulo":"Presidente Tricolor, que esperou pelo treinador durante quase tr\u00eas meses, diz entender que, hoje, o time tem cara e estrutura t\u00e1tica","thumbnail":"http://s.glbimg.com/es/ge/f/90x68/2011/11/25/abelbraga_treino_pho_60.jpg","titulo":"Peter Siemsen elogia trabalho de Abel e afirma: \u2018Valeu a pena esper\u00e1-lo\u2019","ultima_atualizacao":null},{"editoria_principal":"futebol","editorias":[],"permalink":"http://globoesporte.globo.com/futebol/noticia/2011/11/clubes-brasileiros-ampliam-presenca-na-soccerex-em-busca-de-visibilidade.html","primeira_publicacao":"November 28, 2011 20:57:41","site":"globoesporte","subtitulo":"Na primeira edi\u00e7\u00e3o, em 2010, apenas Santos e Bota marcaram presen\u00e7a. Neste ano, j\u00e1 s\u00e3o sete clubes de olho em parcerias para crescer receitas ","thumbnail":"http://s.glbimg.com/es/ge/f/90x68/2011/11/28/standcruzeiro-raulplassman-soccerex_andrecasado1024.jpg","titulo":"Clubes brasileiros ampliam presen\u00e7a\nna Soccerex em busca de visibilidade","ultima_atualizacao":null},{"editoria_principal":"botafogo","editorias":[],"permalink":"http://globoesporte.globo.com/futebol/times/botafogo/noticia/2011/11/wagner-sai-dos-planos-do-bota.html","primeira_publicacao":"November 28, 2011 20:28:54","site":"globoesporte","subtitulo":"Clube faz sondagem ao jogador, mas n\u00e3o evolui nas negocia\u00e7\u00f5es","thumbnail":"http://s.glbimg.com/es/ge/f/90x68/2011/11/09/wagner_lokomotiv_get62.jpg","titulo":"Wagner sai dos planos do Bota","ultima_atualizacao":null},{"editoria_principal":"brasileir\u00e3o s\u00e9rie a","editorias":[],"permalink":"http://globoesporte.globo.com/futebol/brasileirao-serie-a/noticia/2011/11/desempenho-no-segundo-turno-faz-fred-colar-em-borges-na-artilharia.html","primeira_publicacao":"November 28, 2011 20:15:26","site":"globoesporte","subtitulo":"Com m\u00e9dia de 1,3 gol por jogo ap\u00f3s virada do turno, atacante tricolor fica a apenas dois tentos do santista, que n\u00e3o disputar\u00e1 a \u00faltima rodada","thumbnail":null,"titulo":"Desempenho no segundo turno faz Fred colar em Borges na artilharia","ultima_atualizacao":null},{"editoria_principal":"fluminense","editorias":[],"permalink":"http://globoesporte.globo.com/futebol/times/fluminense/noticia/2011/11/se-nao-vencer-o-bota-flu-alcancara-historica-marca-negativa.html","primeira_publicacao":"November 28, 2011 19:05:34","site":"globoesporte","subtitulo":"Desde a profissionaliza\u00e7\u00e3o do futebol no clube, em 1933, o Tricolor nunca passou uma temporada inteira sem vencer um cl\u00e1ssico contra seus rivais","thumbnail":"http://s.glbimg.com/es/ge/f/90x68/2011/11/27/fred_aldur.jpg","titulo":"Se n\u00e3o vencer o Bota, Fluminense alcan\u00e7ar\u00e1 hist\u00f3rica marca negativa","ultima_atualizacao":null},{"editoria_principal":"sportv","editorias":[],"permalink":"http://globoesporte.globo.com/sportv/noticia/2011/11/sub-15-brasil-derrota-argentina-na-estreia-do-quadrangular-final.html","primeira_publicacao":"November 28, 2011 18:14:04","site":"globoesporte","subtitulo":"Ap\u00f3s segundo tempo movimentado, brasileiros conseguem derrotar rivais argentinos no primeiro jogo do quadrangular de encerramento do torneio","thumbnail":null,"titulo":"Brasil vence Argentina na abertura da fase final do Sul-Americano Sub-15","ultima_atualizacao":null},{"editoria_principal":"fluminense","editorias":[],"permalink":"http://globoesporte.globo.com/futebol/times/fluminense/noticia/2011/11/flu-e-o-time-que-menos-empatou-na-historia-dos-pontos-corridos.html","primeira_publicacao":"November 28, 2011 16:45:02","site":"globoesporte","subtitulo":"Campanha de 2011 supera a do Cruzeiro de 2008. Presidente do clube torce para que disputas por t\u00edtulos continuem constantes nas Laranjeiras","thumbnail":"http://s.glbimg.com/es/ge/f/90x68/2011/08/21/rafaelmoura.jpg","titulo":"Flu \u00e9 o time que menos empatou na hist\u00f3ria dos pontos corridos","ultima_atualizacao":null},{"editoria_principal":"redacao sportv","editorias":[],"permalink":"http://globoesporte.globo.com/sportv/programas/redacao-sportv/noticia/2011/11/para-sergio-xavier-classicos-na-ultima-rodada-turbinaram-campeonato.html","primeira_publicacao":"November 28, 2011 14:27:03","site":"globoesporte","subtitulo":"Diretor da revista Placar diz que sistema de enfrentamento regional \u00e9 um gola\u00e7o; Garambone lamenta cl\u00e1ssicos com apenas uma torcida","thumbnail":null,"titulo":"Para S\u00e9rgio Xavier, classicos na \u00faltima rodada turbinaram campeonato","ultima_atualizacao":null},{"editoria_principal":"fluminense","editorias":[],"permalink":"http://globoesporte.globo.com/futebol/times/fluminense/noticia/2011/11/fluminense-ganha-direito-de-voltar-ao-ato-trabalhista.html","primeira_publicacao":"November 28, 2011 13:58:35","site":"globoesporte","subtitulo":"Com a senten\u00e7a da Justi\u00e7a do Trabalho, Peter Siemsen espera equilibrar as contas do clube com diminui\u00e7\u00e3o de gastos. Time n\u00e3o ser\u00e1 afetado ","thumbnail":null,"titulo":"Fluminense ganha direito de voltar ao ato-trabalhista","ultima_atualizacao":null}],"itemInicial":0,"itensObtidos":15,"itensPorPagina":15,"paginaAtual":1,"totalItens":60,"totalPaginas":4}
public partial class MainPage : PhoneApplicationPage { // Constructor public MainPage() { InitializeComponent(); ObterResultadoDoTime("fluminense"); } private void ObterResultadoDoTime(string time = "fluminense") { string url = @"http://wwwwwwww.JSON/1.json"; System.Uri targetUri = new System.Uri(url); HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(targetUri); request.UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; MANUFACTURER; DEVICE)"; request.Headers["Cookie"] = "security=true"; request.BeginGetResponse(new AsyncCallback(ReadWebRequestCallback), request); } private void ReadWebRequestCallback(IAsyncResult callbackResult) { HttpWebRequest myRequest = (HttpWebRequest)callbackResult.AsyncState; HttpWebResponse myResponse = null; try { myResponse = (HttpWebResponse)myRequest.EndGetResponse(callbackResult); //Dispatcher.BeginInvoke(() => btnResultadoProximo.IsEnabled = true); } catch { Dispatcher.BeginInvoke(() => MessageBox.Show("Problemas com a internet ou serviço fora do ar. Tente novamente mais tarde.")); return; } string HTML = ""; using (StreamReader httpwebStreamReader = new StreamReader(myResponse.GetResponseStream(), System.Text.Encoding.UTF8)) { HTML = httpwebStreamReader.ReadToEnd(); List<Futebol> lista = (List<Futebol>)Deserialize(myResponse.GetResponseStream(), typeof(Noticia)); } myResponse.Close(); // serialization //MemoryStream ms = new MemoryStream(); //DataContractJSONSerializationHelper.Serialize(ms, new SampleData()); //ms.Position = 0; //// deserialization //var sampleData = DataContractJSONSerializationHelper.Deserialize(ms, typeof(SampleData)); //ms.Close(); } private void ExibirResultado(string HTML) { throw new NotImplementedException(); } public static void Serialize(Stream streamObject, object objForSerialization) { if (objForSerialization == null || streamObject == null) return; DataContractJsonSerializer ser = new DataContractJsonSerializer(objForSerialization.GetType()); ser.WriteObject(streamObject, objForSerialization); } public static object Deserialize(Stream streamObject, Type serializedObjectType) { if (serializedObjectType == null || streamObject == null) return null; DataContractJsonSerializer ser = new DataContractJsonSerializer(serializedObjectType); return ser.ReadObject(streamObject); } } //[DataContractAttribute] //public class Futebol //{ // [DataMember] // public string ContentText { get; set; } // [DataMember] // public List<int> SomeItems { get; set; } // public Futebol() // { // ContentText = "some text"; // SomeItems = new List<int>() { 1, 2, 3 }; // } //} [DataContractAttribute] public class Noticia { public List<Futebol> conteudos { get; set; } } [DataContractAttribute] public class Futebol { [DataMember] public string editoria_principal { get; set; } [DataMember] public string permalink { get; set; } [DataMember] public string primeira_publicacao { get; set; } [DataMember] public string site { get; set; } [DataMember] public string subtitulo { get; set; } [DataMember] public string thumbnail { get; set; } [DataMember] public string titulo { get; set; } [DataMember] public string ultima_atualizacao { get; set; } }
Gostaria de saber onde estou errando. O problema é na classe que criei logo abaixo ou na hora de Deserializar o objeto?
Desde já agradeço pela coloboração
Respostas
-
Caro Paulo, este é um daqueles casos em que aconselho a fazer de ovelha e ir com o resto do rebanho: utiliza o RestSharp e o JSON.net (ambos disponíveis por NuGet) e acredita que vais poupar muitas dores de cabeça... ;)
Pedro Lamas
DevScope | Senior Solution Developer & WP7 Development Speaker
www.pedrolamas.com | @pedrolamas- Sugerido como Resposta andrecarlucciMVP, Moderator terça-feira, 13 de dezembro de 2011 16:45
- Marcado como Resposta andrecarlucciMVP, Moderator terça-feira, 3 de janeiro de 2012 12:28
Todas as Respostas
-
Consegui resolver pessoal o problema estava aqui
using (StreamReader httpwebStreamReader = new StreamReader(myResponse.GetResponseStream(), System.Text.Encoding.UTF8)) { HTML = httpwebStreamReader.ReadToEnd(); MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(HTML)); Noticia lista = (Noticia)Deserialize(ms, typeof(Noticia)); ms.Close(); } myResponse.Close();
public class Noticia { [DataMember] public List<Futebol> conteudos { get; set; } }
-
Caro Paulo, este é um daqueles casos em que aconselho a fazer de ovelha e ir com o resto do rebanho: utiliza o RestSharp e o JSON.net (ambos disponíveis por NuGet) e acredita que vais poupar muitas dores de cabeça... ;)
Pedro Lamas
DevScope | Senior Solution Developer & WP7 Development Speaker
www.pedrolamas.com | @pedrolamas- Sugerido como Resposta andrecarlucciMVP, Moderator terça-feira, 13 de dezembro de 2011 16:45
- Marcado como Resposta andrecarlucciMVP, Moderator terça-feira, 3 de janeiro de 2012 12:28
-