Asp.net mvc 4 如何转换IList<;对象>;去JsonArray?

Asp.net mvc 4 如何转换IList<;对象>;去JsonArray?,asp.net-mvc-4,json.net,Asp.net Mvc 4,Json.net,我有一个IList,我想将其转换为JsonArray,以在方法JsonResult中返回。我怎么能这样做 注意:我使用的是Json.NET 努力 public JsonResult findByCriterio(String criterio){ Empresa empresa = getEmpresa(); IList<CategoriaProduto> lista = new List<CategoriaProduto>

我有一个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);           
        }

通过使用
JsonConvert.SerializeObject()
Json()
MVC控制器方法,您正在双重序列化结果。您需要这样做:

var jsonArray = JsonConvert.SerializeObject(lista, Formatting.Indented);
return Content(jsonArray, "application/json");
或者这个:

return Json(lista);
如果使用第一种方法,还需要将控制器方法的返回类型从
JsonResult
更改为
ContentResult
ActionResult


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

您使用
JsonConvert.SerializeObject()
Json()
MVC控制器方法双重序列化结果。您需要这样做:

var jsonArray = JsonConvert.SerializeObject(lista, Formatting.Indented);
return Content(jsonArray, "application/json");
或者这个:

return Json(lista);
如果使用第一种方法,还需要将控制器方法的返回类型从
JsonResult
更改为
ContentResult
ActionResult

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