При десериализации JSON в DataTable
, Json. Net автоматически пытается определить тип данных каждого столбца на основе значений свойств первого элемента в массиве. В этом случае первый элемент имеет строку даты для свойства Created Date
, поэтому тип данных столбца устанавливается на DateTime
. Ошибка возникает во втором элементе, когда синтаксический анализатор обнаруживает пустую строку для свойства Created Date
. Пустая строка не может быть преобразована в DateTime
, так что получается JsonSerializationException
.
Если вы хотите, чтобы столбец Created Date
всегда анализировался как строка вместо DateTime
, вы можно установить DateParseHandling
на None
. Это предотвратит ошибку, которую вы видите.
Измените этот код:
DataTable dtData = JArray.Parse(jsonString).ToObject<DataTable>();
На это:
var settings = new JsonSerializerSettings { DateParseHandling = DateParseHandling.None };
DataTable dtData = JsonConvert.DeserializeObject<DataTable>(jsonString, settings);
Fiddle: https://dotnetfiddle.net/EWWGT0