【问题标题】:Correct DateTime format for DataContractJsonSerializerSettingsDataContractJsonSerializerSettings 的正确日期时间格式
【发布时间】:2017-10-18 12:55:13
【问题描述】:
  • 使用 4.5
  • 根据已构建项目的要求,在服务器的一侧使用 Newtonsoft.Json,在服务器的另一侧使用 DataContractJsonSerializer。

为了解析 DataTime 2017-10-17T17:22:50.658+02:00,我已经尝试了两种不同的配置。其他解决方案与不使用DataContractJsonSerializer有关,但这不是我的解决方案。

我已经尝试过的配置:

DateTime example = DateTime.ParseExact(
    "2017-10-17T17:22:50.658+02:00",
    "yyyy-MM-ddTHH:mm:ss.fffzzz", 
    System.Globalization.CultureInfo.InvariantCulture);
  • 在设置中不指定任何日期时间格式

    private static DataContractJsonSerializerSettings GetSerializerSettings()
    {
        var settings = new DataContractJsonSerializerSettings();
    
        settings.UseSimpleDictionaryFormat = true;
        settings.EmitTypeInformation = System.Runtime.Serialization.EmitTypeInformation.Never;
    
        return settings;
    }
    

我收到了DateTime '2017-10-18T13:32:42.753+02:00' are not startingwith '\/Date(' and ending with ')\/' as JSON requires 作为错误消息。

  • 在设置中指定日期时间格式

    private static DataContractJsonSerializerSettings GetSerializerSettings()
    {
        var settings = new DataContractJsonSerializerSettings();
        settings.DateTimeFormat = System.Runtime.Serialization.DateTimeFormat("yyyy-MM-ddTHH:mm:ss.fffzzz");
    
        settings.UseSimpleDictionaryFormat = true;
        settings.EmitTypeInformation = System.Runtime.Serialization.EmitTypeInformation.Never;
        return settings;
    }
    

我收到了Can't recognize as valid DateTime 作为错误消息。

有什么建议吗?

【问题讨论】:

  • 顺便说一下,你应该使用CultureInfo.InvariantCulture进行序列化。
  • 我改了,还是一样的问题...

标签: c# .net json .net-4.5 datacontractjsonserializer


【解决方案1】:

试试看:

DataContractJsonSerializerSettings settings = new DataContractJsonSerializerSettings
{
    DateTimeFormat = new DateTimeFormat("yyyy-MM-ddTHH:mm:ss.fffK")
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多