JsonSerializer는 선행 또는 후행 공백이 있는 Version 형식을 역직렬화하는 동안 예외를 발생시킵니다.
이전 동작
.NET 7 이전에는 선행 또는 후행 공백이 있는 역직렬화 Version 형식이 허용되었습니다.
새 동작
.NET 7 JsonSerializer 에서 시작하여 선행 또는 후행 공백이 있는 FormatException 형식을 역직렬화 Version 할 때 throw합니다.
도입된 버전
.NET 7
파괴적 변경 유형
이 변경 내용은 이진 호환성에 영향을 줄 수 있습니다.
변경 이유
.NET은 기본 변환기의 구현을 최적화했습니다 Version . 이로 인해 System.Text.Json에서 지원하는 다른 기본 형식, 예를 들어 DateTime 및 Guid의 동작과 일치하도록 구현되었으며, 이 형식들은 선행 및 후행 공백도 허용하지 않습니다.
권장 작업
이전 동작을 다시 얻으려면 공백을 허용하는 형식에 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
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET