У нас было то же исключение десериализации для типов System.Version при обновлении с. NET Core 2.1 до 3.1.
Мы создали конвертер:
public class VersionConverter : JsonConverter<Version>
{
public override void WriteJson(JsonWriter writer, Version value, JsonSerializer serializer)
{
}
public override Version ReadJson(JsonReader reader, Type objectType, Version existingValue, bool hasExistingValue, JsonSerializer serializer)
{
var dict = serializer.Deserialize<Dictionary<string, int>>(reader);
var version = new Version(dict["Major"], dict["Minor"], dict["Build"], dict["Revision"]);
return version;
}
public override bool CanWrite => false;
}
Затем мы используйте преобразователь для десериализации:
var result = JsonConvert.DeserializeObject<SomeTypeWithVersionProperty>(serializedValue, new VersionConverter());