Web API 2.0 - 使用 JavaScriptConverter 自定义日期格式
Web API 2.0 - Custom Date Formatting with JavaScriptConverter
我需要每个 DateTime 对象都采用 "yyyy-MM-dd" 的基本格式。
当我使用 JSON.Net 执行此操作时,将以下内容添加到 WebApiConfig.cs 后效果很好:
config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(
new IsoDateTimeConverter() { DateTimeFormat = "yyyy-MM-dd" });
但是,我已经将我的控制器重新设计为 return IHttpActionResult
而只是 return Json(objectToSerialize)
。现在日期格式是错误的,因为我认为这是因为现在使用 JavaScriptConverter
。如果我错了请告诉我。
如何将序列化对象中的每个 DateTime 转换为我需要的格式?
默认情况下,它们现在显示为“1927-01-29T00:00:00”……我需要“1927-01-29”。
我见过一些看起来完全矫枉过正的疯狂黑客攻击(例如 this one)。
有干净的方法吗?
好吧,您仍然可以使用 IHttpActionResult
,但是您 return 的东西不正确。在你的情况下,我相信你可以通过以下方式修复它:
return Ok(objectToSerialize);
它会在 WebApi 中默认保留 JSON.NET,您应该保留日期格式
我需要每个 DateTime 对象都采用 "yyyy-MM-dd" 的基本格式。
当我使用 JSON.Net 执行此操作时,将以下内容添加到 WebApiConfig.cs 后效果很好:
config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(
new IsoDateTimeConverter() { DateTimeFormat = "yyyy-MM-dd" });
但是,我已经将我的控制器重新设计为 return IHttpActionResult
而只是 return Json(objectToSerialize)
。现在日期格式是错误的,因为我认为这是因为现在使用 JavaScriptConverter
。如果我错了请告诉我。
如何将序列化对象中的每个 DateTime 转换为我需要的格式?
默认情况下,它们现在显示为“1927-01-29T00:00:00”……我需要“1927-01-29”。
我见过一些看起来完全矫枉过正的疯狂黑客攻击(例如 this one)。
有干净的方法吗?
好吧,您仍然可以使用 IHttpActionResult
,但是您 return 的东西不正确。在你的情况下,我相信你可以通过以下方式修复它:
return Ok(objectToSerialize);
它会在 WebApi 中默认保留 JSON.NET,您应该保留日期格式