繁体   English   中英

将json-String反序列化为DataSet之后的DateTime-System.FormatException

[英]DateTime-System.FormatException after deserialize json-String to DataSet

在将json字符串反序列化为数据集后,我对DateTime-Format有一个大问题。

Dim formatter = new JsonSerializerSettings() With { .DateFormatString = "yyyy-MM-ddThh:mm:ssZ" }
Dim json = JsonConvert.SerializeObject(result, Newtonsoft.Json.Formatting.Indented,formatter)

在这两行之后,我得到了格式正确的DateTime格式(例如“ 2015-11-24T09:36:00Z”)

但是之后,我必须将此json-string转换为DataSet-Object。 我这样做是这样的:

Dim ds = JsonConvert.DeserializeObject(Of DataSet)(json,formatter)

现在,DateTime-Value看起来像这样:“ 11/24/2015 09:36:00”

最后,此值以Exception结尾,如果我想将其解析为DateTime,则它不是有效的DateTime ...

DateTime.Parse("11/24/2015 09:36:00")

因此,也许有一些我必须使用的格式化程序? 我不知道...

希望你能帮我! 先感谢您!

编辑: Sample-Jsonstring:

{"records":[{"Key":"EIG*11111","ChangeDate":"2015-11-24T09:36:00Z"}]}

此更改日期将在DataRow中格式化为#11/24/2015 09:36:00 AM#

JSON.NET具有IsoDateTimeConverter类,您可以在其中指定日期格式,以使用DateTimeFormat属性将JSON字符串中格式化的UTC日期时间解析为DateTime 属性用法应如下所示:

Dim formatter As New IsoDateTimeConverter With { .DateTimeFormat = "dd/MM/yyyy" }
Dim ds = JsonConvert.DeserializeObject(Of DataSet)(json, formatter)

或以单行形式使用它:

Dim ds = JsonConvert.DeserializeObject(Of DataSet)(json, New IsoDateTimeConverter With { .DateTimeFormat = "dd/MM/yyyy" })

请注意,您需要添加Newtonsoft.Json.Converters命名空间才能启用IsoDateTimeConverter类。

然后,使用上面指定格式的DateTime.ParseExact()来确保可以将返回的日期字符串转换为DateTime类型。

相似的问题(在C#上下文中):

使用Json.Net以dd / mm / yyyy格式反序列化日期

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM