Похоже, ваша ошибка не в строке, начинающейся с var insertdata = new ClientIndividualTable
, но несколько строк до этого.
Вероятно, ваша ошибка возникает в строке, аналогичной этой.
MyJsonClass item = JsonConvert.DeserializeObject<MyJsonClass>(fileText);
Вы должны создать конвертер DateTime, чтобы Newtonsoft знала, как обрабатывать используемый пользовательский формат.После этого вы должны украсить класс, используемый для добавления атрибута в свойство DateTime.
Пример файла JSON:
{
"COID" : "myCompanyId",
"CLIENTID" : "myClientId",
"BIRTHDAY" : "20-09-1982 12:00:00",
}
Класс, соответствующий структуре JSON:
public class MyJsonClass
{
public string COID { get; set; }
public string CLIENTID { get; set; }
[JsonConverter(typeof(CustomDateTimeConverter))]
public DateTime? BIRTHDAY { get; set; }
}
И JsonConverter
будет похоже на это.
public class CustomDateTimeConverter : DateTimeConverterBase
{
private const string Format = "dd-MM-yyyy HH:mm:ss";
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
writer.WriteValue(((DateTime)value).ToString(Format));
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
if (reader.Value == null)
{
return null;
}
var s = reader.Value.ToString();
DateTime result;
if (DateTime.TryParseExact(s, Format, CultureInfo.InvariantCulture, DateTimeStyles.None, out result))
{
return result;
}
return null;
}
}
Примечание: мой ответ основан на этом сообщении в блоге