什么是JSON ?净?MVC已经有了一种将对象转换为json的方法

What is JSON.NET for? MVC already has a way to convert objects to json

本文关键字:对象 一种 转换 方法 json MVC JSON 什么      更新时间:2023-09-26

我查看了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库,但是当从标准控制器返回JsonResult时,在MVC 4中使用的默认序列化器是JavascriptSerializer。你可以创建一个自定义Json result,并在标准控制器中重写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
        };
    }
相关文章: