【问题标题】:Deserialize json utc date from jira api to .net datetime将 json utc 日期从 jira api 反序列化为 .net 日期时间
【发布时间】:2013-09-22 12:49:32
【问题描述】:

Jira 正在使用此日期时间格式响应 GET 请求:

“2013-09-17T12:07:36.000-0500”

我已经做到了这一点: settings.DateTimeFormat = new DateTimeFormat("yyyy-MM-ddTHH:mm:ss.fff");

  • 1)。我需要逃避'T'吗? (\T)
  • 2)。我不知道如何处理'-0500'
    • a) 看起来 zzz 可能会起作用,但这让我得到 '-05:00'
    • b) 我试过了,但没用:“yyyy-MM-ddTHH:mm:ss.fffZ”

【问题讨论】:

  • 我认为 jira 不会以这种形式返回字符串。它应该是 xml 或 json。您的序列化程序不会自动将其转换为 DateTime 吗?
  • Jira 的日期时间在 REST API 调用的响应中如下所示。创建:“2013-09-17T12:07:35.000-0500”这是我们正在谈论的 JSON,是的,我正在使用反序列化器对其进行转换。问题是反序列化器期望的日期看起来像这样 '\/(date)\/'
  • 有没有可能你是这样看的。也许一个正确的序列化程序可以给你一个DateTime。如何发布您的代码以及 Jira 返回的内容。
  • 我发送了一个 GET 请求来搜索问题,它返回原始 JSON 格式的日期格式如我所描述的那样。如果您需要示例,请在此处导航:jira.atlassian.com/rest/api/latest/issue/JRA-9.json
  • 您使用哪个序列化程序。例如,Json.Net 可以解析它。

标签: c# .net json datetime jira


【解决方案1】:

试试“yyyy-MM-dd'T'HH:mm:ss.FFFK”

【讨论】:

    【解决方案2】:

    这是经典的XY-Problem。 (X 将是:我该如何处理这个 json 响应

    看看如何使用Json.Net轻松完成

    WebClient wc = new WebClient();
    string json = wc.DownloadString("https://jira.atlassian.com/rest/api/latest/issue/JRA-9.json");
    dynamic jObj = JObject.Parse(json);
    DateTime dt = (DateTime)jObj.fields.updated;
    

    当然,也可以将 json 字符串反序列化为具体的类。在这种情况下,您可以使用this site

    【讨论】:

    • 我想这就是我尝试使用 DataContractJsonSerializer 得到的结果。试图不使用框架之外的代码。我已经吸取了教训。我已经让它与 JSON.Net 一起工作,它开箱即用,没有 DateTime 格式化地狱。谢谢。
    【解决方案3】:

    这个 sn-p 能解决你的问题吗?

    using System.Web.Script.Serialization;
    
    var json = @"{ date : ""2013-09-17T12:07:36.000-0500""}";
    var date = new JavaScriptSerializer().Deserialize<Dictionary<string, DateTime>>(json);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-06
      相关资源
      最近更新 更多