Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSON.NET的用途是什么?MVC已经有了将对象转换为json的方法_Javascript_Serialization_Json.net - Fatal编程技术网

Javascript JSON.NET的用途是什么?MVC已经有了将对象转换为json的方法

Javascript JSON.NET的用途是什么?MVC已经有了将对象转换为json的方法,javascript,serialization,json.net,Javascript,Serialization,Json.net,我看了JSON.NET网站,但我不明白。。。我已经有了这样的代码 string[] invalidFiles = new string[] { "one.xls", "two.xls", "three.xls" }; return Json(new { Status = "OK", InvalidFiles = invalidFiles }); 将对象转换为json。。。所以我看了JSON.N

我看了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);

??对于MVC 4中的Web API,默认序列化程序是json.net库,但是当从标准控制器返回MVC 4中的JsonResult时,使用默认序列化程序。默认情况下,您可以创建一个自定义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
        };
    }

对于MVC 4中的Web API,默认序列化程序是json.net库,但是当从标准控制器返回MVC 4中的JsonResult时,使用默认序列化程序。默认情况下,您可以创建一个自定义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
        };
    }

这取决于您使用的是哪个版本的MVC,Microsoft将JSON.net库合并到较新版本的MVC中,因为它非常有用……我使用的是MVC 4。。那么,这是否意味着我在调用“Json”方法时正在使用它?这取决于您使用的MVC版本,Microsoft将Json.net库合并到了较新版本的MVC中,因为它非常有用……我正在使用MVC 4。。那么,这是否意味着我在调用“Json”方法时正在使用它?