如何将IList <object>转换为JsonArray?

时间:2016-10-28 10:20:05

标签: 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>();
            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;
    }

}

1 个答案:

答案 0 :(得分:3)

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

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

或者这个:

return Json(lista);

如果您使用第一种方法,则还需要将控制器方法的返回类型从JsonResult更改为ContentResultActionResult

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