none
Como serializar um objeto no formato JSON ? RRS feed

  • Pergunta

  • Olá  galera,
    Estou tentando usar json na minha apliação da seguinte forma.

    Na controller:

    Function ObterJson(ByVal parametro as String) as ActionResult
    
          Dim pessoa As Pessoa = PessoaDAO.ObterPessoa(parametro)
    
          Return Json(pessoa)
    End Function
    no meu script em JQuery:
    $.ajax({
       url : "/MyController/ObterJson",
       data: {parametro : 123},
       dataType: "json",
       sucess: function(json){//meu codigo },
       error: function(xhr, er){ alert(xhr.statusText); }  //Internal Server Error 500
    });



    O que estou fazendo de errado ?
    Como devo serializar o objeto Pessoa para Json?


    obs:
    O metodo jquery consegue passar os dados corretamente para a controler,
    na hora de retornar o Json(pessoa) o degub não alerta nada
    e quando a resposta chega sempre cai na function error com a seguinte mensagem: "Internal Server Error 500" (O que quer dizer isso se vi nehuma exception?).


    Valeu galera.
    Abraão Alves - Um eterno estudante
    quarta-feira, 17 de março de 2010 21:39

Respostas

  • Fala Abraão,

    Aparentemente o que você está fazendo está correto. Como você está tomando o erro 500, sugiro que dê uma olhada no Event Viewer, que com certeza haverá um log contendo o erro exato que ocasionou o erro 500.

    Uma outra coisa que você pode fazer é alterar o web.config para exibir os erros detalhados (<customErrors mode="Off" />) e chamar a url do método "ObterJson" diretamente no browser (algo como http://localhost:xxx/MyController/ObterJson?parametro=123) e ver o erro que vai ocorrer.


    Forte abraço,

    André Borges Medeiros
    MCT, MCPD, MCTS

    >> Se a resposta solucionar sua dúvida, favor Votar como Útil
    • Marcado como Resposta Abraão Alves quinta-feira, 18 de março de 2010 19:00
    quinta-feira, 18 de março de 2010 12:21
    Moderador
  • Fala Abraão.

    Tem sim, com anonymous type :

    Function ObterJson(ByVal parametro as String) as ActionResult

          Dim pessoa As Pessoa = PessoaDAO.ObterPessoa(parametro)

          Return Json(New With { .Id = pessoa.Id, .Nome = pessoa.Nome, .Endereco = pessoa.Endereco })
    End Function



    Forte abraço,

    André Borges Medeiros
    MCT, MCPD, MCTS

    >> Se a resposta solucionar sua dúvida, favor Votar como Útil
    • Marcado como Resposta Abraão Alves quinta-feira, 18 de março de 2010 19:00
    quinta-feira, 18 de março de 2010 17:35
    Moderador

Todas as Respostas

  • Fala Abraão,

    Aparentemente o que você está fazendo está correto. Como você está tomando o erro 500, sugiro que dê uma olhada no Event Viewer, que com certeza haverá um log contendo o erro exato que ocasionou o erro 500.

    Uma outra coisa que você pode fazer é alterar o web.config para exibir os erros detalhados (<customErrors mode="Off" />) e chamar a url do método "ObterJson" diretamente no browser (algo como http://localhost:xxx/MyController/ObterJson?parametro=123) e ver o erro que vai ocorrer.


    Forte abraço,

    André Borges Medeiros
    MCT, MCPD, MCTS

    >> Se a resposta solucionar sua dúvida, favor Votar como Útil
    • Marcado como Resposta Abraão Alves quinta-feira, 18 de março de 2010 19:00
    quinta-feira, 18 de março de 2010 12:21
    Moderador
  • É isso mesmo André,
    Parece que tem uma referencia circular em um dos meus relacionamentos com outros objetos e ele dá ____ na hora serializar.

    Tem como eu montar um objeto do tipo JsonResult com apenas os campos que vou utilizar na View (no caso apenas 4 campos)?
    Como faço isso ?

    Há Daniel,
    Show de bola seu site! A maioria das coisas legais que aprendi de MVC foi lá, parabens continui assim.


    Abraão Alves - Um eterno estudante
    quinta-feira, 18 de março de 2010 16:35
  • Fala Abraão.

    Tem sim, com anonymous type :

    Function ObterJson(ByVal parametro as String) as ActionResult

          Dim pessoa As Pessoa = PessoaDAO.ObterPessoa(parametro)

          Return Json(New With { .Id = pessoa.Id, .Nome = pessoa.Nome, .Endereco = pessoa.Endereco })
    End Function



    Forte abraço,

    André Borges Medeiros
    MCT, MCPD, MCTS

    >> Se a resposta solucionar sua dúvida, favor Votar como Útil
    • Marcado como Resposta Abraão Alves quinta-feira, 18 de março de 2010 19:00
    quinta-feira, 18 de março de 2010 17:35
    Moderador