JSON(JavaScript Object Notation)是Web在实作Ajax应用程序时常使用的一种传输数据格式,JsonResult可自动将任意对象数据串行化成JSON格式回传,JsonResult默认的ContentType为application/json,对某些JavaScript Framework这是必要需求,例如,jQuery。
JsonResult是使用JavaScriptSerializer完成JSON串行化操作,但如果你的对象无法串行化,这个转换的过程将会发生例外。
在使用JsonResult时必须特别注意,从ASP.NET MVC2.0开始,为了避免JSON Hijacking的攻击,ASP.NET MVC开发团队基于安全性考虑,在默认的情况下,任何以JsonResult回传的要求都不允许HTTP GET取得任何JSON信息。
如下演示会响应一个JSON格式的数据:
public ActionResult JSON()
{
return Json(new{
id=1,
name="Will",
CreatedOn=DateTime.Now
});
}
如果你是用HTTP POST方法取得该属性,将会得到以下结果:
{"id":1,"name":"Will","CreatedOn":"\/Date(1350116309992)\/"}
如果直接在浏览器输入网址(即以HTTP GET取得属性),将会出现错误信息。