JsonConvert.DeserializeObject<Da​​taTable>(jsondata); 强制日期时间到字符串列

jim*_*o R 2 c# json json.net

这是我的json:

[
 {"ID":"1","DATETIME":"2018-05-02T00:00:00"},
 {"ID":"2","DATETIME":"2018-05-02T00:00:00"},
 {"ID":"3","DATETIME":""},
 {"ID":"4","DATETIME":"2018-05-02T00:00:00"}
]
Run Code Online (Sandbox Code Playgroud)

我正在使用DataTable dt = JsonConvert.DeserializeObject<DataTable>(jsondata);从 json 转换为数据表,但是使用空日期时间列我收到以下错误:

字符串未被识别为有效的 DateTime。无法在 DATETIMEColumn 中存储 <>。预期类型为 DateTime。

那么如何将我的 json 转换为所有列都是字符串的数据表

use*_*994 7

您可以将Serializer设置定义为忽略DateTime解析,以便将动态 JOSN 转换为DataTable. 缺点DateTime将在DataTable.

var settings = new JsonSerializerSettings
        {
            DateParseHandling = DateParseHandling.None
        };
        
string json = "[{\"ID\":\"1\",\"DATETIME\":\"2018-05-02T00:00:00\"}, {\"ID\":\"1\",\"DATETIME\":\"\"}]";

var jsonObj = JsonConvert.DeserializeObject<DataTable>(json, settings);
        
Console.WriteLine(jsonObj.Rows.Count);
        
Run Code Online (Sandbox Code Playgroud)

您可以DateParseHandling此处阅读设置。

检查这个现场小提琴