Deserialización del tipo de versión con espacio en blanco inicial o final
JsonSerializer ahora produce una excepción en la deserialización de tipos Version que tienen espacios en blanco iniciales o finales.
Comportamiento anterior
Antes de .NET 7, se permitía la serialización de tipos Version que tenían espacios en blanco iniciales o finales.
Comportamiento nuevo
A partir de .NET 7, JsonSerializer produce un FormatException en la deserialización de los tipos Version que tienen espacios en blanco iniciales o finales.
Versión introducida
.NET 7
Tipo de cambio importante
Este cambio puede afectar a la compatibilidad binaria.
Motivo del cambio
.NET ha optimizado la implementación del convertidor subyacente Version. Esto dio lugar a que la implementación se hiciera para alinearse con el comportamiento de otros tipos primitivos que admite System.Text.Json, por ejemplo, DateTime y Guid, que tampoco permite espacios iniciales y finales.
Acción recomendada
Para recuperar el comportamiento anterior, agregue un convertidor personalizado para el tipo Version que permita espacios en blanco:
internal sealed class VersionConverter : JsonConverter<Version>
{
public override Version Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
string? versionString = reader.GetString();
if (Version.TryParse(versionString, out Version? result))
{
return result;
}
ThrowHelper.ThrowJsonException();
return null;
}
public override void Write(Utf8JsonWriter writer, Version value, JsonSerializerOptions options)
{
writer.WriteStringValue(value.ToString());
}
}
API afectadas
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de