Usuário com melhor resposta
Como converter um IList<Object> para um JSONArray ?

Pergunta
-
Estou tentando converter um IList<Object> para um JSONArray e não estou conseguindo, andei pesquisando e vi alguns posts falando pra usar o JSON.Net que tbm testei e ainda não consegui fazer.
Como fazer isso ?
Estou tentando assim.
// retorna JsonArray de todas as categorias public JsonResult findAllCategorias(){ IList<Categoria> lista = dao.findAll(); return Json(lista); } //retorna JsonArray com biblioteca JSON.Net public ContentResult findAllCategorias(){ IList<Categoria> lista = dao.findAll(); var jsonArray = JsonConvert.SerializeObject(lista, Formatting.Indented); return Content(jsonArray, "application/json"); }
Quero meu retorno de JSONArray assim
{ Categoria: [
{id:1, descricao:"pizzas"},
{id:2, descricao:"lanches"}
]
- Editado Paiva Fernando sexta-feira, 4 de novembro de 2016 18:47 mais informacoes
Respostas
-
Bom pessoal, como não consegui fazer isso usando o serializable diretamente na entidade e pelo que pesquisei é por conta do NHibernate, encontrei uma dica bem bacana para criar uma classe de modelo JSON da entidade que preciso e enfim funcionou perfeitamente.
ficou assim.
Entidade modelo JSON
public class CategoriaJsonModel { public long id {get;set;} public String descricao {get;set;} public CategoriaJsonModel(){} public CategoriaJsonModel(long id, String descricao){ this.id = id; this.descricao = descricao; } }
E depois instancio essa classe passando os valores da entidade Categoria e retorno o Json do model.
public JsonResult findAllCategorias(){ IList<Categoria> lista = dao.findAll(); IList<CategoriaJsonModel> listaModel = new List<CategoriaJsonModel>(); foreach(Categoria c in lista){ listaModel.add(new CategoriaJsonModel(c.id, c.descricao); } return Json(listaModel); }
Pronto, 100% funcionando.
obrigado a todos !
- Marcado como Resposta Paiva Fernando sábado, 5 de novembro de 2016 03:42
Todas as Respostas
-
Qual é o resultado que voce obtem? O que voce fez esta certo.. vai depender muito de como voce definiu a classe Categoria.
de qualquer forma eu sugiro que voce use o formato abaixo, caso seja para utilizaçao em um metodo Ajax:
public JsonResult findAllCategorias(){ IList<Categoria> lista = dao.findAll(); return Json(new { Categoria= lista},JsonRequestBehavior.AllowGet); }
Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
- Editado William John Adam TrindadeModerator sexta-feira, 4 de novembro de 2016 18:51
- Sugerido como Resposta MARCOSROCHA21 terça-feira, 6 de dezembro de 2016 12:55
-
-
Olá,
Fiz uma live sobre isso. Segue: https://www.youtube.com/watch?v=hyASCgatZsg
Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!
André Secco
Microsoft MSP & MSDN Tech Advisor
Blog: http://andresecco.com.br
GitHub: http://github.com/andreluizsecco
Twitter: @andre_secco -
Pessoal, eu acredito que o problema seja pq estou usando o NHibernate/FluentNHibernate e por isso não estou conseguindo serializar este IList<Categoria> para um JSONArray. Estou procurando a solução, se alguém ja fez isso com NHibernate/FluentNHibernate e puder ajudar, agradeço. !
-
É independente., nao creio que seja isso.
Tem certeza que esse codigo:
IList<Categoria> lista = dao.findAll();
Traz uma lista de categorias?
O normal é fazer algo assim:
var categorias = session.CreateCriteria<Categoria>().List<Categoria>();
O que voce obtem como resultado? Pode postar o codigo da classe categoria?
Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
- Editado William John Adam TrindadeModerator sexta-feira, 4 de novembro de 2016 20:01
-
Sim William, a lista contem os objetos Categoria, eu faço um foreach nela e exibe as categorias e no o Count tbm mostra a quantidade de objetos dentro do IList. Pelo que andei pesquisando tem um esquema pra fazer quando eh NHibernate, mas ainda não consegui resolver.
Encontrei uma resposta aqui link e estou tentando implementar
-
Bom pessoal, como não consegui fazer isso usando o serializable diretamente na entidade e pelo que pesquisei é por conta do NHibernate, encontrei uma dica bem bacana para criar uma classe de modelo JSON da entidade que preciso e enfim funcionou perfeitamente.
ficou assim.
Entidade modelo JSON
public class CategoriaJsonModel { public long id {get;set;} public String descricao {get;set;} public CategoriaJsonModel(){} public CategoriaJsonModel(long id, String descricao){ this.id = id; this.descricao = descricao; } }
E depois instancio essa classe passando os valores da entidade Categoria e retorno o Json do model.
public JsonResult findAllCategorias(){ IList<Categoria> lista = dao.findAll(); IList<CategoriaJsonModel> listaModel = new List<CategoriaJsonModel>(); foreach(Categoria c in lista){ listaModel.add(new CategoriaJsonModel(c.id, c.descricao); } return Json(listaModel); }
Pronto, 100% funcionando.
obrigado a todos !
- Marcado como Resposta Paiva Fernando sábado, 5 de novembro de 2016 03:42