.net Json ISO日期未反序列化为DateTime对象

.net Json ISO日期未反序列化为DateTime对象,.net,json,macos,mono,.net,Json,Macos,Mono,我正在创建一个在.net/mono上运行的多平台应用程序,并使用Newtonsoft.Json序列化信息 在我尝试使用完全相同版本的Newtonsoft.Json.dll在机器之间发送信息之前,所有这些都工作得很好 事实证明,日期是以ISO格式正确序列化的:“2013-02-08T12:11:39Z”,但当我尝试在Mac OS上反序列化它们时,我得到的是一个字符串,而不是DateTime对象 我使用序列化程序设置做了一些实验: private static readonly JsonSerial

我正在创建一个在.net/mono上运行的多平台应用程序,并使用Newtonsoft.Json序列化信息

在我尝试使用完全相同版本的Newtonsoft.Json.dll在机器之间发送信息之前,所有这些都工作得很好

事实证明,日期是以ISO格式正确序列化的:“2013-02-08T12:11:39Z”,但当我尝试在Mac OS上反序列化它们时,我得到的是一个字符串,而不是DateTime对象

我使用序列化程序设置做了一些实验:

private static readonly JsonSerializerSettings jsonSettings = new JsonSerializerSettings {
    DateTimeZoneHandling = DateTimeZoneHandling.Utc,
    DateFormatHandling = DateFormatHandling.IsoDateFormat,
    DateParseHandling = DateParseHandling.DateTime,
    Converters = new JsonConverter [] { new Newtonsoft.Json.Converters.IsoDateTimeConverter { DateTimeFormat = "yyyy-MM-ddTHH:mm:ssZ" } }
};

JsonConvert.DeserializeObject<object> ("\"2013-02-08T10:11:51Z\"", jsonSettings);
返回类似于“\”2013-02-08T12:22:25.974177+02:00\”的内容,这不是标准格式,无法用于通信

最奇怪的是,我有一个客户的Mac电脑没有这样的问题。我开始认为这与操作系统有某种关系,但我指定的确切格式不能解决这个问题吗?

fwiw,“2013-02-08T12:22:25.974177+02:00”是一种标准格式(请参阅)。但我确实同情:JSON日期处理是一个雷区。
JsonConvert.DeserializeObject<object>(JsonConvert.SerializeObject(DateTime.Now, jsonSettings), jsonSettings);
JsonConvert.DeserializeObject<object>(JsonConvert.SerializeObject(DateTime.Now));
JsonConvert.SerializeObject(DateTime.Now);