全,
我们使用JSON,其中我们有一个基于REST的服务,并使用ASP.NET作为有效负载。如果我将以下日期作为字符串传递,例如
sampleObj: {
...
myDate: "31/12/2011 00:00:00",
...
}
作为JSON有效负载中的一个属性值,date属性被反序列化为一个DateTime.MinValue。字符串格式是否有效?
我们知道格式"2012-10-17 07:45:00“序列化成功,但我们不能保证收到的所有日期都是这种格式。有效的选项是什么?
发布于 2012-10-18 04:49:15
在JsonFormatter Web API中,您可以通过ASP.NET的DateTimeConverters添加不同的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上找到了一些可能对您有用的内容:How to create a json.net Date to String custom Converter.
发布于 2016-01-21 00:34:34
只需在web.config中设置全球化:
<globalization enableClientBasedCulture="false" requestEncoding="utf-8" responseEncoding="utf-8" culture="en-GB" uiCulture="en-GB"/>
然后,在Global.asax.cs > Application_Start中,将JsonFormatter设置为使用当前区域性:
var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.SerializerSettings.Culture = System.Globalization.CultureInfo.CurrentCulture;
https://stackoverflow.com/questions/12936614
复制相似问题