2016-10-28 73 views
0

我有一个IList,我想将它转换为JsonArray以返回方法JsonResult。我怎么能这样做?如何将IList <Object>转换为JsonArray?

注:我使用Json.NET

尝试。

public JsonResult findByCriterio(String criterio){ 
      Empresa empresa = getEmpresa(); 
      IList<CategoriaProduto> lista = new List<CategoriaProduto>(); 
      if (criterio.Length >= 5){ 
       lista = dao.findByCriterio(criterio, empresa); 
      }else{ 
       lista = dao.findAll(empresa); 
      } 
      var jsonArray = JsonConvert.SerializeObject(lista, Formatting.Indented); 
      return Json(jsonArray);   
     } 

实体

[Serializable] 
public class CategoriaProduto{ 

    public virtual long id { get; set; } 
    public virtual String descricao { get; set; } 
    public virtual Empresa empresa { get; set; } 

    public CategoriaProduto(){   
    } 

    public override string ToString(){ 
     return descricao; 
    } 

} 

回答

3

同时使用JsonConvert.SerializeObject()Json() MVC控制器方法你是双串行化你的结果。你要么需要这样做:

var jsonArray = JsonConvert.SerializeObject(lista, Formatting.Indented); 
return Content(jsonArray, "application/json"); 

或本:

return Json(lista); 

如果使用第一种方法,你还需要从JsonResult要么ContentResult改变你的控制器方法的返回类型或ActionResult

如果您使用第二种方法,请注意它在内部不使用Json.Net序列化程序(它实际上使用JavaScriptSerializer),因此它不会使用您可能使用的任何Json.Net设置或属性。