프로그래밍/C#

[C#] Newtonsoft Json 상속 대상까지 Serialize하기

흔한티벳여우 2022. 1. 18. 11:48
반응형

다음과 같은 구조가 있다고 해보자.

public class Box
{
    public double Length { get; set; }
    public double Width { get; set; }
    public double Height { get; set; }
}

public class Carton : Box
{
    public int Index { get; set; }
}

Carton은 Box를 상속 받는다. 이러한 객체의 값을 Serialize하게 되면 아래와 같은 형태로 나온다.

{
    "Index": 1,
    "Length": 800.0,
    "Width": 600.0,
    "Height": 1400.0
}

위의 Json 정보만으로는 이것이 Carton인지 다른 어떤 객체인지 확인이 불가능하다. 

 

var settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All };
string json = JsonConvert.SerializeObject(Carton, Newtonsoft.Json.Formatting.Indented, settings);

위와 같이 직렬화 옵션을 주면 아래와 같이 바뀌어서 나온다.

{
    "$type": "Test.Carton",
    "Index": 1,
    "Length": 800.0,
    "Width": 600.0,
    "Height": 1400.0
}

이것을 통해 우리가 원하는 객체가 어떤 것인지 type을 통해 파악이 가능하다.

반응형