带有JSON.net的Web API 2 - 全局应用DateTime格式

时间:2014-10-29 11:43:22

标签: c# json

我似乎在某处丢失了某些东西。希望有人能发现它,我可以安全地继续我的生活,因为我知道将来我需要更加努力:

我一直在尝试配置一个使用JSON.net序列化程序的WebApi 2项目。

编辑:我的终点是odata 2 - 如果这会产生影响,我正在追求。

我希望DateTime格式普遍不是ISO。我知道ISO格式是理想的目的,但是目前我的客户端库没有很好地处理这个问题,而且对于快速和脏的我想要使用与显示所需格式相同的格式来交换日期和日期时间。 /编辑。这将让我有时间编写客户端库的日期/日期时间控件的自定义修改。我的场景有用并不需要实际的本地化,所以在短期内我可以安全地使用这种方法。

所以,遵循各种主题和指南,包括: http://james.newtonking.com/archive/2009/02/20/good-date-times-with-json-net

Custom DateTime serialization with Json.Net

Set default global json serializer settings

除了ISO日期格式之外,我似乎仍然无法获得任何回报。 我已经切换了格式缩进'来回,我可以看到这对我的结果有好处。

这是我当前在WebApiConfig.cs Register方法中应用的配置。任何人都可以帮助我进行正确的配置,以便以Javascript格式返回所有日期和时间,或者使用自定义JSONConverter作为英国日期格式(dd / mm / yyyy HH:mi:ss):

    JsonMediaTypeFormatter jsonFormatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
    JsonSerializerSettings jSettings = new Newtonsoft.Json.JsonSerializerSettings()
    {
        DateFormatHandling = Newtonsoft.Json.DateFormatHandling.MicrosoftDateFormat,
        DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Utc,
        NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore,
        Formatting = Newtonsoft.Json.Formatting.Indented, // For dev only set json to prettyprint
        Culture = new CultureInfo("en-GB"),
    };
    //jSettings.Converters.Add(new UkDateTimeConvertor());
    //jSettings.DateFormatString = "dd'-'MM'-'yyyy' 'HH':'mm':'ss";
    jSettings.Converters.Add(new JavaScriptDateTimeConverter());
    jsonFormatter.SerializerSettings = jSettings;

0 个答案:

没有答案