선행 또는 후행 공백을 가진 버전 형식 역직렬화
이제 선행 또는 후행 공백이 있는 Version 형식을 역직렬화하는 동안 JsonSerializer에서 예외가 throw됩니다.
이전 동작
.NET 7 이전에는 선행 또는 후행 공백이 있는 Version 형식의 역직렬화가 허용되었습니다.
새 동작
.NET 7에서 시작된 JsonSerializer는 선행 또는 후행 공백이 있는 Version 형식을 역직렬화할 때 FormatException을 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
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기