ASP.NET Web API自定义DateTime样本值格式

时间:2014-08-12 19:42:20

标签: json.net asp.net-web-api date-format asp.net-web-api2

我正在使用Web API帮助文档来连接API开发人员和UI客户端开发人员。 我想在帮助中定义的项目之一是日期格式。 并希望在API操作详细信息页面的请求/响应信息样本中对其进行自定义:

我有请求实体:

public class Request
{
    public string Id {get;set;}
    public string Type {get;set;}
    public DateTime Date {get;set;} 
}

这是帮助页面的默认表示:

{
  "Id": "sample string 1",
  "Type": "sample string 2",
  "Date": "2014-08-12T19:33:09.6221727+00:00"
}

我希望它如下:

{
  "Id": "sample string 1",
  "Type": "sample string 2",
  "Date": "08/13/2014"
}

我如何实现这一目标?

1 个答案:

答案 0 :(得分:3)

事实证明,ASP.NET Web.API使用通用的Json.NET格式化程序,您可以为此目的注册自己的日期转换器:

   public class MyDateFormatConverter : DateTimeConverterBase
    {
        public override object ReadJson(Newtonsoft.Json.JsonReader reader, Type objectType, object existingValue, Newtonsoft.Json.JsonSerializer serializer)
        {
            return DateTime.Parse(reader.Value.ToString());
        }

        public override void WriteJson(Newtonsoft.Json.JsonWriter writer, object value, Newtonsoft.Json.JsonSerializer serializer)
        {
            writer.WriteValue(((DateTime)value).ToString("d"));
        }
    }

然后在GLOBAL(WebApiConfig,而不是HelpPageConfig)配置中注册它:

config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new MyDateFormatConverter());