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