В моем проекте VB.NET, используя JSON.NET, у меня есть JSON из веб-API, который имеет значение, представляющее дату в формате yyyy-MM-ddTHH:mm:ss
, и я бы как просто получить эту ценность.JSON.NET: получить конкретное значение даты JSON
Вот более или менее то, что 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")
Моя попытка использовать Regex:
Dim regex As Regex = New Regex("""REQ_DATE"": ""([\d\w]*)""")
Dim match As Match = regex.Match(myJsonAsString)
If match.Success Then
Dim myDesiredResult As String = match.Groups(1).Value
End If
' match is empty...
Любые и вся помощь очень ценится.
Интересно. Мне удалось выполнить эту работу с моим ответом ниже, но это объясняет автоматическое преобразование - и решение более элегантно. – chakeda