Javascript JSON.NET的用途是什么?MVC已经有了将对象转换为json的方法
我看了JSON.NET网站,但我不明白。。。我已经有了这样的代码Javascript JSON.NET的用途是什么?MVC已经有了将对象转换为json的方法,javascript,serialization,json.net,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.N
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库,但是当从标准控制器返回MVC 4中的JsonResult时,使用默认序列化程序。默认情况下,您可以创建一个自定义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
};
}
对于MVC 4中的Web API,默认序列化程序是json.net库,但是当从标准控制器返回MVC 4中的JsonResult时,使用默认序列化程序。默认情况下,您可以创建一个自定义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
};
}
这取决于您使用的是哪个版本的MVC,Microsoft将JSON.net库合并到较新版本的MVC中,因为它非常有用……我使用的是MVC 4。。那么,这是否意味着我在调用“Json”方法时正在使用它?这取决于您使用的MVC版本,Microsoft将Json.net库合并到了较新版本的MVC中,因为它非常有用……我正在使用MVC 4。。那么,这是否意味着我在调用“Json”方法时正在使用它?