javascript - JSON.NET 是做什么用的? MVC已经有一种将对象转换为json的方法

标签 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.NET,这似乎做了同样的事情?我缺少什么?一个简单的例子说明了我可以用 JSON.NET 做什么

protected internal JsonResult Json(object data);

??

最佳答案

对于 MVC 4 中的 Web API,默认序列化程序是 json.net 库,但是当从标准 Controller 返回 MVC 4 中的 JsonResult 时,使用的默认序列化程序是 JavascriptSerializer 。您可以创建自定义 jsonresult 并重写标准 Controller 中的 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);
    }
}

然后重写基本 Controller 方法中的 json 方法并返回 json,就像您当前所做的那样:

    protected override JsonResult Json(object data, string contentType, Encoding contentEncoding, JsonRequestBehavior behavior)
    {
        return new JsonNetResult() {
            Data = data,
            ContentType = contentType,
            ContentEncoding = contentEncoding
        };
    }

关于javascript - JSON.NET 是做什么用的? MVC已经有一种将对象转换为json的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16567063/

相关文章:

javascript - 将索引附加到对象引用

python - Python 中嵌套 NamedTuples 的 JSON 反序列化

c# - 对于 .Net 中的浮点值,如何防止未定义的值序列化为 0?

c# - 如何使 Json.NET 序列化和反序列化也实现 IDictionary<string, object> 的自定义动态类型的已声明属性?

c# - JSON.NET 序列化列表作为父对象的属性

javascript - 使用 ASCII 代码的虚拟键盘

javascript - JS Promise <Pending> 返回

javascript - 带有纯 css 视差的 Jquery 滚动不起作用

java - 序列化和普通对象存储的区别?

c# - 如何将整数反序列化为 int,而不是 long?