【问题标题】:c# datatype for json time [duplicate]json时间的c#数据类型[重复]
【发布时间】:2017-06-01 19:15:11
【问题描述】:

我从 rest api 得到以下 json 结果,我正在使用 Newtonsoft.Json 将其反序列化为 c# 对象。

    {
  "d": {
    "results": [
      {
        "Aufnr": "4000103",
        "Workdate": "/Date(1482796800000)/",
        "Beguz": "PT07H30M00S",
      }
    ]
  }
}

AufnrWorkdate 正在使用 StringDateTime,但我不知道要为 Beguz 使用哪种数据类型

我尝试了TimeSpanDateTime 并得到了这个错误:Error converting value "PT07H30M00S" to type 'System.TimeSpan'. Path '[0].Beguz'

有什么想法吗?

【问题讨论】:

  • 为什么字符串会出错?
  • 那是一个字符串,不是吗?我猜它包含一个时间(07:30:00),但该格式是一个字符串。您可以向对象添加属性以将其“转换”为日期时间,或使用自定义转换器
  • 对我来说这看起来像是时间跨度格式。您需要手动解析它
  • @J.Steen “远未达到标准化格式” - is ISO 8601 standardized enough? ;)
  • @CodeCaster 废话,在发布该评论之前,我正在查看 ISO8601 - 我承认非常简短 - 但错过了!我非常糟糕。

标签: c# json json.net


【解决方案1】:

这是一个纯字符串:

public string Beguz { get; set; }

当然,如果您希望这个PT07H30M00S 字符串由一些复杂的自定义结构表示,您可以编写一个custom JsonConverter 来完成此任务。在此转换器中,您需要提供如何将此字符串解析回您的某些自定义结构的逻辑。

【讨论】:

    猜你喜欢
    • 2019-08-15
    • 2018-07-16
    • 2012-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-20
    相关资源
    最近更新 更多