我查看了 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/