从我的Web API向Json发送日期

时间:2014-08-19 15:26:49

标签: c# json asp.net-web-api

我的api中有2个部分。一个是更新的东西,我想尽可能保持输出现代/标准。我还有一个遗留部分,必须与旧程序交谈,我无法修改。

旧程序希望日期采用这种格式。

"EndDateActual":"\/Date(1398272400000+0000)\/"

目前我以这种格式发送Date对象。

"EndDateActual":"2014-04-23T17:00:00Z"

日期作为字符串而不是DateTime从存储过程返回。

将哪个传递到使用[DataMember] [DataContract]属性修饰的Task对象。

我将所有内容作为IEnumerable传回,其中String实际上是一个日期,是Task对象的一个​​优点。

[DataContract()]
public class Task
{
    [DataMember(Order = 1)]
    public Guid Id { get; set; }

    [DataMember(Order = 2)]
    public string StartDateActual { get; set; }

    [DataMember(Order = 3)]
    public string StartDateProjected { get; set; }

    [DataMember(Order = 4)]
    public string EndDateActual { get; set; }

    [DataMember(Order = 5)]
    public string EndDateProjected { get; set; } 

我还没设法让杀菌器工作。但是,由于EndDateActual是一个字符串,它会工作吗?

如果可能的话,我想让它以遗留对象的方式工作,以及api其余部分的标准方式,我猜这是默认的,所以我想避免全局选项。但是,我仍然是新手,所以如果我错了请纠正我。

提前致谢!

1 个答案:

答案 0 :(得分:0)

您需要更新Json.NET的配置,以便它不使用默认的ISO日期转换器:

JsonSerializerSettings serializerSettings = new JsonSerializerSettings
{
    DateFormatHandling = DateFormatHandling.MicrosoftDateFormat
};

然后,您需要将这些设置传递给应用程序的配置,例如:

GlobalConfiguration.Configuration.Formatters[0] = new JsonNetFormatter(serializerSettings);