【问题标题】:WebApi Json.NET custom date handlingWebApi Json.NET 自定义日期处理
【发布时间】:2013-08-29 05:25:58
【问题描述】:

我已将我的 MVC4 应用程序全局显式配置为使用 JSON.NET 序列化程序。我知道在序列化日期时我可以选择使用 ISO 标准日期或旧的 Microsoft 日期格式。

但是如何输出我自己的自定义日期时间格式字符串,例如:“dd/MM/yyyy hh:mm”。

当插入 Json.NET 作为默认序列化程序时,我可以在 MVC3 中执行此操作,但在 MVC4 中似乎无法执行此操作。

到目前为止,我已经完成了 application_start :

  var settings =     GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings;            
        JsonSerializerSettings jSettings = new Newtonsoft.Json.JsonSerializerSettings()
        {
            Formatting = Formatting.Indented,
            DateTimeZoneHandling = DateTimeZoneHandling.Utc,


        };
        jSettings.Converters.Add(new MyDateTimeConvertor() );
        settings = jSettings;

我试图实现的自定义转换器是这样的:

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

        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            writer.WriteValue(((DateTime)value).ToString("dd/MM/yyyy hh:mm"));
        }
    }

任何帮助将不胜感激:)

【问题讨论】:

  • 请记住,问题的根源在于您没有将 jSettings 分配给 GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings。相反,您将其分配给“设置”,这是一个局部变量。

标签: asp.net-mvc-4 asp.net-web-api json.net


【解决方案1】:

像这样更改您的设置设置代码:

JsonMediaTypeFormatter jsonFormatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
JsonSerializerSettings jSettings = new Newtonsoft.Json.JsonSerializerSettings()         
{
    Formatting = Formatting.Indented,
    DateTimeZoneHandling = DateTimeZoneHandling.Utc
};
jSettings.Converters.Add(new MyDateTimeConvertor());
jsonFormatter.SerializerSettings = jSettings;

在您的代码中,您只是在更改局部变量值。

【讨论】:

  • 所以我将新配置的 Jsonserializersettings 分配给序列化程序设置而不是其父 jsonFormatter??....嗯,很多都是猜测工作,但谢谢你的帮助 :)
【解决方案2】:

谢谢,我快疯了,这对我来说效果很好,将其粘贴到 Global.asax.cs 中

JsonMediaTypeFormatter jsonFormatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
JsonSerializerSettings jSettings =...

创建一个 MyDateTimeConvertor 类,将其粘贴到该类中

public class MyDateTimeConvertor : DateTimeConverterBase
{
    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        return DateTime...

wep api mvc4,网络服务,自定义日期格式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-30
    • 2015-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多