为Json.Net指定DateTime序列化/反序列化的全局设置

Kar*_*sar 1 json.net

是否可以设置JSON.Net,如果要序列化DateTime,则将其序列化为UTC格式.从字符串反序列化时,它被反序列化为"LocalTime".例如:

  • 序列化
    • 01/01/2012 16:00:00(Kind = UTC)存储为 2012-01-01T16:00:00Z
    • 01/01/2012 16:00:00(Kind = Local,GMT +1) - >存储为 2012-01-01T15:00:00Z
  • 反序列化(假设机器具有本地时间= GMT + 1)
    • 2012-01-01T16:00:00Z - >反序列化到01/01/2012 17:00 + 1GMT(Kind = Local)
    • 2012-01-01T15:00:00Z - >反序列化到01/01/2012 16:00 + 1GMT(Kind = Local)

但是,我希望这种情况"自动"发生,而不必每次都使用设置来指定它 - 就像全局设置一样.这可能吗?

Mas*_*uto 5

在ASP.NET WebAPI中,它是可能的.试试这个:

// Converters will be userd during serialization (override DateTimeZoneHandling)
config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AdjustToUniversal });
// DateTimeZoneHandling will be effective during deserialization
config.Formatters.JsonFormatter.SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.Local;
Run Code Online (Sandbox Code Playgroud)