对于 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
};
}