JSON中的ASP.NET Web API日期格式未成功序列化
所有,
我们正在使用ASP.NET Web API,我们有一个基于REST的服务,其中包含有效负载的JSON。 如果我将以下日期作为字符串传递,例如
sampleObj: { ... myDate: "31/12/2011 00:00:00", ... }
作为JSON有效内容中的属性值,date属性被反序列化为DateTime.MinValue。 字符串格式有效吗?
我们知道格式“2012-10-17 07:45:00”成功序列化,但我们不能保证收到的所有日期都是这种格式。 有效的选择是什么?
在ASP.NET Web API中,您可以通过JsonFormatter的SerializerSettings添加不同的Json.NET DateTimeConverters,以使您的服务理解不同的DateTime格式。
但是,我认为Json.NET中没有默认的DateTimeConverter采用这种格式“31/12/2011 00:00:00”。 在这种情况下,您实现自定义DateTimeConverter。
WebApiConfig.cs:
config.Formatters.JsonFormatter.SerializerSettings.Converters.Add( new IsoDateTimeConverter()); config.Formatters.JsonFormatter.SerializerSettings.Converters.Add( new MyDateTimeConverter());
自定义DateTimeConverter:
public class MyDateTimeConverter : DateTimeConverterBase { //... }
有关如何编写自定义DateTimeConverter的更多信息,我在stackoverflow上发现了一些您可能会觉得有用的东西: 如何创建一个json.net Date to String自定义Converter。
只需在web.config中设置全球化:
然后,在Global.asax.cs> Application_Start中,将JsonFormatter设置为使用当前文化:
var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter; json.SerializerSettings.Culture = System.Globalization.CultureInfo.CurrentCulture;
- 如何使用自定义属性扩展IdentityUser
- ASP.Net Web Api – ApiExplorer不包含任何ApiDescriptions
- App_Global.asax.compiled和App_Global.asax.dll丢失了吗? WebApi .NET 4.5项目
- 我可以绕过MVC应用程序内的WebAPI控制器的组织身份validation吗?
- 使用ASP.NET Web API并排进行基本和表单身份validation
- 在ASP.Net Web API中的日志记录DelegatingHandler中读取HttpRequestMessage.Content时丢失
- 如何定义路由中的PUT方法仅限于没有参数的控制器中的Put方法?
- MVC 4 Web API寄存器filter
- ASP.NET Web API中的可选查询字符串参数