선행 또는 후행 공백을 가진 버전 형식 역직렬화

이제 선행 또는 후행 공백이 있는 Version 형식을 역직렬화하는 동안 JsonSerializer에서 예외가 throw됩니다.

이전 동작

.NET 7 이전에는 선행 또는 후행 공백이 있는 Version 형식의 역직렬화가 허용되었습니다.

새 동작

.NET 7에서 시작된 JsonSerializer는 선행 또는 후행 공백이 있는 Version 형식을 역직렬화할 때 FormatException을 throw합니다.

도입된 버전

.NET 7

호환성이 손상되는 변경의 형식

이 변경은 이진 호환성에 영향을 줄 수 있습니다.

변경 이유

.NET은 기본 Version 변환기의 구현을 최적화했습니다. 이로 인해 System.Text.Json에서 지원하는 다른 기본 형식(예: 선행 및 후행 공백도 허용하지 않는 DateTimeGuid)의 동작과 일치하도록 구현이 이루어졌습니다.

이전 동작을 다시 가져오려면 공백을 허용하는 Version 형식에 대한 사용자 지정 변환기를 추가합니다.

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