我有一个IList,我想将它转换为JsonArray以返回方法JsonResult。我怎么能这样做?
注意:我正在使用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;
}
}
答案 0 :(得分: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设置或属性使用