Придерживайтесь try / catch вокруг кода, десериализующего строку, также сначала выведите строку в переменную, а во время работы разбейте ее и проверьте, как выглядит строка, убедитесь, что строка json правильно, у меня ранее была проблема, когда имена параметров были внутри одинарных речевых меток "вместо двойных"
Одна область, в которой я видел, что проблема может возникнуть в вашем коде (это может испортить строку):
string json = JsonConvert.SerializeObject(ActiveCustomer, Newtonsoft.Json.Formatting.Indented);
using (StreamWriter file = File.CreateText(curFile))
{
JsonSerializer serializer = new JsonSerializer();
serializer.Serialize(file, json);
}
В этом случае вы сериализуете объект (отлично), но затем вы используете jsonserializer для его сериализации снова? Это будет означать, что он не будет соответствовать классу объекта Customer. Вместо этого, возможно, просто напишите json строка в файл, поэтому:
string json = JsonConvert.SerializeObject(ActiveCustomer, Newtonsoft.Json.Formatting.Indented);
File.WriteAllText(file, json);
https://json.org/example.html может помочь.
Если это не работает, не могли бы вы отредактировать ваше сообщение на включить строку JSON?