JSON中的ASP.NET Web API日期格式不会成功序列化



all,

我们使用的是ASP.NET Web API,其中我们与JSON提供了基于REST的服务进行有效载荷。如果我将以下日期作为字符串,例如

sampleObj: {
...
myDate: "31/12/2011 00:00:00",
...
}

作为JSON有效载荷中的属性值,日期属性被应为datetime.minvalue。字符串格式有效吗?

我们知道" 2012-10-17 07:45:00"的格式,成功序列化,但我们不能保证收到的所有日期都将采用这种格式。有效的选项是什么?

在ASP.NET Web API中,您可以通过JSONFormatter的SerializerSettings添加不同的JSON.NET DATETIMECONECONECONETERS,以使您的服务了解不同的DateTime格式。

但是,我认为json.net中没有默认的dateTimeConverter以这种格式" 31/12/2011 00:00:00"。在这种情况下,您可以实现自定义数据元素。

webapiconfig.cs:

        config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(
             new IsoDateTimeConverter());
        config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(
             new MyDateTimeConverter());

自定义数据频率:

public class MyDateTimeConverter : DateTimeConverterBase
{
    //...
}  

有关如何编写自定义datetimeconverter的更多信息,我在stackoverflow上发现了一些您可能会发现有用的信息:如何创建json.net日期到字符串自定义转换器。

只是在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;

相关内容

  • 没有找到相关文章

最新更新