当我回到使用包含的DateTime属性对象
return Json(value);
在客户端我收到
"/Date(1336618438854)/"
如果我使用返回相同的值
return Json(JsonConvert.SerializeObject(value));
然后返回的序列化值(带有序列化对象一起)是时区意识到:
"/Date(1336618438854-0400)/"
有没有什么办法来得到一致的DateTime结果无无双序列化? 我在其他地方见过那个MS将包括Newtonsoft JSON到MVC?
我终于想通了,做什么。
我将切换我的项目ISO 8601 DateTime格式。 序列化只是用JsonConverter属性的对象上装饰的日期时间属性与JSON.net很好做。
public class ComplexObject
{
[JsonProperty]
public string ModifiedBy { get; set; }
[JsonProperty]
[JsonConverter(typeof(IsoDateTimeConverter))]
public DateTime Modified { get; set; }
...
}
要返回序列化对象到客户端AJAX调用我可以这样做:
return Json(JsonConvert.SerializeObject(complexObjectInstance));
并在客户端上:
jsObject = JSON.parse(result)
现在,我想这将是可能简单覆盖默认的ASP.NET MVC默认JSON序列化给我们Newtonsoft JSON.net ISO 8601的序列,是的原则应该是类似这样的主题: 更改默认JSON序列使用ASP MVC3 。
在WebApiConfig集:
config.Formatters.Remove(config.Formatters.XmlFormatter);
//config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/json"));
config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
config.Formatters.JsonFormatter.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.Indented;
config.Formatters.JsonFormatter.SerializerSettings.DateFormatHandling = Newtonsoft.Json.DateFormatHandling.IsoDateFormat;
config.MapHttpAttributeRoutes();
在ApiController返回此:
return Request.CreateResponse(HttpStatusCode.OK, obj);
好运CAhumada
如果你不想在掏解析的事情不是简单地转换你的日期字符串比用JSON解析它。
例如
return Json(DateTime.Now.ToString("your date format if you want to specify"));
它返回服务器日期格式。 您需要定义自己的函数。
function jsonDateFormat(jsonDate) {
// Changed data format;
return (new Date(parseInt(jsonDate.substr(6)))).format("mm-dd-yyyy / h:MM tt");
};
文章来源: ASP.NET MVC Controller.Json DateTime Serialization vs NewtonSoft Json DateTime Serialization