是否可以在ASP.NET MVC 3中使用JSON.NET作为默认的JSON序列化程序?
根据我的研究,似乎完成此任务的唯一方法是扩展ActionResult,因为MVC3中的JsonResult不是虚拟的 ......
我希望在ASP.NET MVC 3中有一种方法可以指定一个可插入的提供程序来序列化为JSON.
思考?
我有一个动作,它返回一个特定类的对象的JsonResult.我已经使用一些attrib来装饰这个类的属性以避免使用null字段.类定义是:
private class GanttEvent
{
public String name { get; set; }
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public String desc { get; set; }
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public List<GanttValue> values { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在我的Action中我使用了一个对象
var res = new List<GanttEvent>();
Run Code Online (Sandbox Code Playgroud)
我回来使用:
return Json(res, JsonRequestBehavior.AllowGet);
Run Code Online (Sandbox Code Playgroud)
不幸的是,我仍然在输出时收到空值:
[{"name":"1.1 PREVIOS AL INICIO ","desc":null,"values":null},{"name":"F04-PGA-S10","desc":"Acta preconstrucción","values":null},{"name":"F37-PGA-S10","desc":"Plan de inversión del anticipo","values":null},{"name":"F09-PGA-S10","desc":"Acta de vecindad","values":null},{"name":"F05-PGA-S10","desc":"Acta de inicio","values":null},{"name":"F01-PGA-S10","desc":"Desembolso de anticipo","values":null}]
Run Code Online (Sandbox Code Playgroud)
我错过了什么或做错了什么?
当我返回包含DateTime属性的对象时使用
return Json(value);
Run Code Online (Sandbox Code Playgroud)
我收到的客户
"/Date(1336618438854)/"
Run Code Online (Sandbox Code Playgroud)
如果我使用返回相同的值
return Json(JsonConvert.SerializeObject(value));
Run Code Online (Sandbox Code Playgroud)
然后返回的序列化值(与序列化对象一起)是时区感知的:
"/Date(1336618438854-0400)/"
Run Code Online (Sandbox Code Playgroud)
有没有办法在没有双序列化的情况下获得一致的DateTime结果?我在某处读过MS会将Newtonsoft JSON包含到MVC中吗?