JSON.NET:获取特定的JSON日期值
在我的VB.NET项目中,使用
JSON.NET,我从Web API获得了一个JSON,其值表示yyyy-MM-ddTHH:mm:ss格式的日期,我想简单地得到那个价值.
这里或多或少是JSON的样子: { "REQ_DATE": "2016-01-17T12:27:57","REQ_TYPE": "Vacation","HOURS": 500.0,"LEAVE_TIME": "8:00 AM","LEAVE_DATE": "2016-01-23T00:00:00","DUE_TIME": "8:00 AM","DUE_DATE": "2016-01-24T00:00:00",} 所以我应该将它序列化并按照我的意愿行事,对吗?但是,当我将该键值放入变量时,日期格式会自动更改! Dim temp As String = myJsonResult("REQ_DATE") ' temp = "1/17/2016 12:27:57 PM" 我需要从检索到的JSON中获取该日期.我认为有两种方法可以解决这个问题:将其转换为yyyy-MM-ddTHH:mm:ss手动,或使用正则表达式直接获取键值对 – 这两者都没有成功. 我尝试将其转换为DateTime: Dim tempDateTime As DateTime = DateTime.ParseExact(myJsonResult("REQ_DATE").ToString,"yyyy-MM-dd hh:mm:ss",CultureInfo.InvariantCulture) ' Error: String is not Recognized as valid DateTime Dim myDesiredResult As String = tempDateTime.ToString("yyyy-MM-ddTHH:mm:ss") 我试图使用正则表达式: Dim regex As Regex = New Regex("""REQ_DATE"": ""([dw]*)""") Dim match As Match = regex.Match(myJsonAsString) If match.Success Then Dim myDesiredResult As String = match.Groups(1).Value End If ' match is empty... 非常感谢任何和所有的帮助.
我假设myJsonResult是一个加载了JSON的JObject.
您的困难在于Json.NET在读取时自动将字符串识别为日期并将其转换为DateTime结构.然后,当您稍后对值标记执行ToString()时,它将以c#的“不变文化”格式返回,而不是原始格式,在本例中为ISO 8601.如果您不想要此行为,则可以使用解析JSON Dim jsonString = "{'REQ_DATE':'2016-01-17T12:27:57','REQ_TYPE':'Vacation','HOURS':500.0,'LEAVE_TIME':'8:00 AM','LEAVE_DATE':'2016-01-23T00:00:00','DUE_TIME':'8:00 AM','DUE_DATE':'2016-01-24T00:00:00'}" Dim settings = New JsonSerializerSettings() With { _ .DateParseHandling = DateParseHandling.None _ } Dim myJsonResult = JsonConvert.DeserializeObject(Of JObject)(jsonString,settings) Dim dateValue = myJsonResult("REQ_DATE") Dim dateString = CType(dateValue,String) 'Value is 2016-01-17T12:27:57
或者,如果您可以使用Json.NET识别日期,但总是希望它们以ISO 8601格式打印,则可以将令牌重新序列化为JSON,而不仅仅是获取字符串值: Dim dateValue = myJsonResult("REQ_DATE") Dim dateString = JsonConvert.SerializeObject(dateValue).Trim(""""c) 'Value is 2016-01-17T12:27:57 原型fiddle.相关c# question. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |