首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ASP.NET中的JSON日期格式未成功序列化

ASP.NET中的JSON日期格式未成功序列化
EN

Stack Overflow用户
提问于 2012-10-17 22:28:01
回答 2查看 34.2K关注 0票数 18

全,

我们使用JSON,其中我们有一个基于REST的服务,并使用ASP.NET作为有效负载。如果我将以下日期作为字符串传递,例如

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

作为JSON有效负载中的一个属性值,date属性被反序列化为一个DateTime.MinValue。字符串格式是否有效?

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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.

票数 48
EN

Stack Overflow用户

发布于 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;
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12936614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档