当前位置: 首页 > 面试题库 >

JSON.NET:获取特定的JSON日期值

梁豪
2023-03-14
问题内容

在我的VB.NET项目中,使用JSON.NET,我从Web API获得了一个JSON,该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中获取的Date。我看到解决此问题的两种方法:将其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...

任何帮助都将不胜感激。


问题答案:

我假设这myJsonResultJObject您已将JSON加载到其中的内容。

DateParseHandling.None`](http://www.newtonsoft.com/json/help/html/P_Newtonsoft_Json_JsonSerializerSettings_DateParseHandling.htm)以下命令解析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

有没有超载JObject.Parse(),需要一个JsonSerializerSettings,所以你需要使用DeserializeObject。此设置最终传播到JsonReader.DateParseHandling

另外,如果您可以使用Json.NET识别日期,但始终希望它们以ISO 8601格式打印,则可以将令牌重新序列化为JSON,而不仅仅是获取字符串值:

        Dim dateValue = myJsonResult("REQ_DATE")
        Dim dateString = JsonConvert.SerializeObject(dateValue).Trim(""""c) 'Value is 2016-01-17T12:27:57


 类似资料:
  • 在使用date格式自动设置为IE后,我试图解析某个包含日期条目为纪元数值的json文档。我需要不同的格式(也需要一毫秒) 所以问题是,如何解析IE。转换为带有Bson文档的某种自定义格式字符串。解析方法? 编辑:只是一个更新:问题在document.parse方法中,因为我不知道如何在解析json文档时使用tell.parse函数来使用自定义的日期格式。我总是得到某种默认的日期格式。如何发送给.p

  • 我正在尝试使用Android studio和Java构建一个简单的天气预报应用程序。我在这里遵循了一些指示(https://www.androdocs.com/java/creating-an-android-weather-app-using-java.html)要启动并运行,这是可行的。然而,我只能得到当前的天气。Openweather预测API调用似乎持续了5天。没关系,但如何获得用户指定的

  • 问题内容: 给定此基准日期: 我想在列表中找到一个包含最接近日期的元组,但是它不能是更早的日期。 所以这里的输出应该是(它不能是第三个元组,因为那里的日期早于基准日期) 我的问题是,是否存在用于此类日期比较的任何模块?我试图先将所有数据更改为格式,然后进行比较,但是我的代码变得很丑陋,而且切片很多。 @编辑: 要测试的大清单: 要测试的大清单: 问题答案: 将日期转换为datetime对象,所以现

  • } 我想从这个json对象中获取值。 我在下面试过了,但没有成功。

  • audit_modifier是VARCHAR2(30个字符),并且audit_modifier值以以下格式存储[2018-01-18T17:19:47.285z]。 从TO_DATE('2018-01-16','yyyy-mm-dd')和TO_DATE('2018-01-16','yyyy-mm-dd')之间的trunc(audit_modifier)的表中选择*; ORA-00932:不一致的数

  • 确定当前给定区域设置的短日期格式的最佳方法是什么? 例如,如果我的脚本的语言环境设置为荷兰语,我希望以某种方式获得该特定语言环境中使用的短日期格式,它将是: 年月日 如果设置为American,我希望获得美国地区的日期格式: 年月日 等等