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이미지추가