1

我查看了 JSON.NET 站点,但没有得到它......我已经有这样的代码..

  string[] invalidFiles = new string[] { "one.xls", "two.xls", "three.xls" };

        return Json(new
        {
            Status = "OK",
            InvalidFiles = invalidFiles
        });

将对象转换为 json ......所以我查看了 JSON.NET,这似乎做同样的事情?我错过了什么?什么是 JSON.NET 可以做什么的简单示例,我可以用它做什么

protected internal JsonResult Json(object data);

??

4

1 回答 1

1

对于 MVC 4 中的 Web API,默认序列化程序是 json.net 库,但是当从标准控制器返回 MVC 4 中的 JsonResult 时,使用的默认序列化程序是JavascriptSerializer。您可以创建自定义 jsonresult 并覆盖标准控制器中的 Json 方法以默认使用 Json.Net 库。

要使用 json.net,您可以首先创建自定义结果:

   public class JsonNetResult : JsonResult
   {
    public override void ExecuteResult(ControllerContext context)
    {
        if (context == null)
        {
            throw new ArgumentNullException("Controller Context");
        }

        HttpResponseBase response = context.HttpContext.Response;

        if (ContentEncoding != null)
        {
            response.ContentEncoding = ContentEncoding;
        }

        var jsonData = JsonConvert.SerializeObject(Data);

        response.ContentType = !string.IsNullOrEmpty(ContentType)
            ? ContentType
            : "application/json";
        response.Write(jsonData);
    }
}

然后在基本控制器方法中覆盖 json 方法并像您当前所做的那样返回 json:

    protected override JsonResult Json(object data, string contentType, Encoding contentEncoding, JsonRequestBehavior behavior)
    {
        return new JsonNetResult() {
            Data = data,
            ContentType = contentType,
            ContentEncoding = contentEncoding
        };
    }
于 2013-05-16T21:08:08.443 回答