https://learn.microsoft.com/ko-kr/dotnet/core/whats-new/dotnet-8?source=recommendations#serialization
인터페이스타입을 제네릭으로 JSON 직렬화 할때,
기존에는 상속받는 부모인터페이스가 있어도 자기 자신의 인터페이스 맴버만 직렬화 하였으나
닷넷8부터는 부모로부터 상속받는 맴버까지 포함하여 직렬화 한다고 함.
interface IBase { int Base { get; } }
interface IDerived : IBase { int Derived { get; } }
class DerivedImplement : IDerived
{
public int Base { get; set; }
public int Derived { get; set; }
}
이런 코드에서
JsonSerializer.Serialize<IDerived>(new DerivedImplement { Base = 0, Derived =1 });
의 결과가 기존에는 {"Derived":1} 만 나왔지만 8부터는 {"Base":0,"Derived":1} 로 나오게됨.
마이그레이션시 런타임에서 예상치못한 이슈를 발생시킬수 있으므로 메모.
+ JSON.NET의 경우에는 그냥 object가지고 동적으로 처리하며 제네릭 직렬화 개념이 없음.
+ 20230801이미지추가
댓글 0