Json ISO Date不反序列化为DateTime对象

我正在创建一个适用于.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-08T10:11:51Z” 。 我做了一些更多的实验,结果发现,使用完全相同的设置,我无法序列化和反序列化日期:

JsonConvert.DeserializeObject<object>(JsonConvert.SerializeObject(DateTime.Now, jsonSettings), jsonSettings);

我仍然得到一个代表ISO日期的字符串。 之后我也试了一下:

JsonConvert.DeserializeObject<object>(JsonConvert.SerializeObject(DateTime.Now));

现在我得到了适当的DateTime对象。 但是运行下面的代码表明日期序列化的方式不完全是ISO格式:

JsonConvert.SerializeObject(DateTime.Now);

返回类似“”2013-02-08T12:22:25.974177 + 02:00 “”这不是标准的,并且不能用于通信。

最奇怪的是,我有一个客户端机智的Mac没有这样的问题。 我开始认为这与操作系统有某种相关性,但是那么我不能确定这个格式的确切格式吗?

链接地址: http://www.djcxy.com/p/8137.html

上一篇: Json ISO Date not deserialized as DateTime object

下一篇: DateTimeConverter converting from UTC string