将 json utc 日期从 jira api 反序列化为 .net 日期时间
Posted
技术标签:
【中文标题】将 json utc 日期从 jira api 反序列化为 .net 日期时间【英文标题】:Deserialize json utc date from jira api to .net datetime 【发布时间】: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 可以解析它。
【参考方案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);
【讨论】:
以上是关于将 json utc 日期从 jira api 反序列化为 .net 日期时间的主要内容,如果未能解决你的问题,请参考以下文章
如何使用客户端的时区将 asp.net 日期时间反序列化为 JSON 日期时间
无法使用 Joda Time API 将日期转换为 UTC [关闭]