【发布时间】:2020-04-15 07:16:50
【问题描述】:
我正在尝试将 JSON 数据解析为 C# 中的 DataTable。但是在解析时我看到了Newtonsoft.Json.JsonSerializationException。
将值“”转换为类型“System.DateTime”时出错。路径 '[1]['Created Date']',第 8 行,位置 20。
这是我用来解析数据的代码:
DataTable dtData = JArray.Parse(jsonString).ToObject<DataTable>();
示例 JSON 数据:
[
{
"rno": 1,
"Name": "XYZ",
"Created Date": "2014-04-30T14:39:12.2397769Z"
},
{
"rno": 2,
"Name": "ABC",
"Created Date": ""
}
]
谁能告诉我如何管理这种类型的场景。我只是想在向数据表中添加数据时防止数据类型发生变化。应该将列数据类型设置为字符串,而不是 DateTime。
【问题讨论】:
-
如果你看一下第二个条目中
created date的值,你注意到什么了吗? -
另外,退一步解释一下为什么要将 JSON 转换为
DataTable。这很奇怪。您不希望将其转换为具体类型的列表吗?为什么特别想要DataTable? -
是否支持
DataTableNullable<T>@Eldar? -
使用 app.quicktype.io?share=wq0HmxtiEUoJoDaIEOmQ 将其解析为标准 C# 类型。然后手动生成
DataTable并手动填充。 -
您的问题是
"Created Date"被识别为 DateTime 字符串 - 但""不是有效的 DateTime 字符串。要禁用自动DateTime识别,请设置DateParseHandling = DateParseHandling.None,如Json.NET Disable the deserialization on DateTime 所示。现在您的DataTable将使用string列而不是DateTime列创建。如有必要,您可以在反序列化后对其进行后处理以将列转换为DateTime。
标签: c# json asp.net-mvc datatable json.net