DateTime-Spaltentyp wird nach Deserialisierung von DataTable @ zu String-T

Ich habe eine DataTable mit zwei Spalten. ShipmentDate (DateTime) und Count (Int). Nachdem ich die Zeichenfolge deserialisiert habe, ist mir aufgefallen, dass der Typ von ShipmentDate eine Zeichenfolge wird, wenn der erste itemarray-Wert null ist.

Überprüfen Sie das folgende Beispiel. Beide JSON-Strings haben dieselben Daten mit Ausnahme des ersten Array-Elements.

string jsonTable1 = "[{\"ShipmentDate\":null,\"Count\":3},{\"ShipmentDate\":\"2015-05-13T00:00:00\",\"Count\":13},{\"ShipmentDate\":\"2015-05-19T00:00:00\",\"Count\":1},{\"ShipmentDate\":\"2015-05-26T00:00:00\",\"Count\":1},{\"ShipmentDate\":\"2015-05-28T00:00:00\",\"Count\":2}]";
string jsonTable2 = "[{\"ShipmentDate\":\"2015-05-13T00:00:00\",\"Count\":13},{\"ShipmentDate\":null,\"Count\":3},{\"ShipmentDate\":\"2015-05-19T00:00:00\",\"Count\":1},{\"ShipmentDate\":\"2015-05-26T00:00:00\",\"Count\":1},{\"ShipmentDate\":\"2015-05-28T00:00:00\",\"Count\":2}]";

DataTable tbl1 = Newtonsoft.Json.JsonConvert.DeserializeObject<DataTable>(jsonTable1);
DataTable tbl2 = Newtonsoft.Json.JsonConvert.DeserializeObject<DataTable>(jsonTable2);

Console.WriteLine(tbl1.Columns["ShipmentDate"].DataType);
Console.WriteLine(tbl2.Columns["ShipmentDate"].DataType);

In meinem Szenario kann ShipmentDate des ersten Element-Arrays null sein, was zu Problemen führt, wenn es in einen Zeichenfolgentyp konvertiert wird.

Ich habe eine Situation, in der das Schema der Datentabelle dynamisch ist. Ich kann keine stark typisierten Klassen erstellen.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage