System.Text.Json IAsyncEnumerable 직렬화
System.Text.Json에서 이제 IAsyncEnumerable<T> 인스턴스의 직렬화 및 역직렬화를 지원합니다.
이전 동작
이전 버전에서는 System.Text.Json에서 IAsyncEnumerable<T> 인스턴스를 빈 JSON 개체({}
)로서 직렬화했습니다. 역직렬화는 JsonException이 발생하면서 실패했습니다.
새 동작
이제 비동기 직렬화 메서드는 개체 그래프의 모든 IAsyncEnumerable<T> 인스턴스를 열거한 다음 JSON 배열로 직렬화합니다. 비동기 직렬화 메서드는 IAsyncEnumerable<T> 직렬화를 지원하지 않고 NotSupportedException을 throw합니다.
도입된 버전
.NET 6
호환성이 손상되는 변경의 형식
이 변경은 소스 호환성에 영향을 줄 수 있습니다. .NET 6으로 대상을 변경하는 경우 컴파일 시간 오류가 발생하지 않지만 런타임 직렬화 동작 차이가 발생할 수 있습니다.
변경 이유
이 변경은 ASP.NET Core MVC에서 IAsyncEnumerable<T> 응답을 스트리밍하는 기능을 지원하기 위해 도입되었습니다.
권장 작업
직렬화 모델에 IAsyncEnumerable<T>을 구현하는 형식이 포함되어 있는지 확인하고 JSON 출력에서 열거형을 내보내는 것이 바람직한지 판단합니다. 다음 방법 중 하나를 이용해 IAsyncEnumerable<T> 직렬화를 비활성화할 수 있습니다.
- JsonIgnoreAttribute를 IAsyncEnumerable<T>을 포함하는 속성에 연결합니다.
- IAsyncEnumerable<T> 인스턴스를 빈 JSON 개체로 직렬화하는 사용자 지정 변환기 팩터리를 정의합니다.
영향을 받는 API
참고 항목
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET