【问题标题】:JSON.net Compact Framework Parsing ISO8601 datesJSON.net Compact Framework 解析 ISO8601 日期
【发布时间】:2018-01-12 10:04:04
【问题描述】:

我将 JSON.net 用于 Compact Framework - 版本 3.5r8。引用文件为:Newtonsoft.Json.Compact.dll

如果我有一个带有 ISO 8601 格式的日期/时间的 JSON 对象,例如:

{
   "name": "TestObject",
   "timestamp": "2017-08-04T13:39:16+01:00"
}

我使用JsonConvert.DeserializeObject<TestObject>(response) 对其进行反序列化,C# 按预期将时间戳属性解析为 DateTime,但是时间是在上午 05:39 解析的,因此显然存在时区问题,导致解析失败距离 UTC 8 小时。

我很欣赏 JSON.net 的“完整”/最新版本确实有我们可以通过 JsonSerializerSettings 传递的选项来更改日期时区处理,但这些选项似乎都不适用于 JSON.net Compact。

如何使时间戳按预期以 UTC 格式解析?

【问题讨论】:

    标签: c# .net json datetime json.net


    【解决方案1】:

    是的,您可以设置时区。

    var json = JsonConvert.DeserializeObject<TestObject>(response, new JsonSerializerSettings
               {
                   DateTimeZoneHandling = DateTimeZoneHandling.Utc
               });
    

    【讨论】:

    • 感谢您的回复,但如前所述,此版本的 JSON.net 中没有公开 DateTimeZoneHandling 选项。
    • 很遗憾没有,该命名空间中唯一可用的属性在这里:imgur.com/a/RiqAy
    猜你喜欢
    • 2012-10-28
    • 2012-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多