[C#] JSON Serialization 할 때 enum 타입을 문자열 형태로 변환시키기

 보통 JSON Serialization 후 텍스트 파일 형태로 저장하거나 DB에 저장하거나 하는데, enum 값이 숫자 형태로 저장되어서 JSON 문자열을 열어볼 때 readbility가 떨어집니다.  그래서 enum 타입 변수의 값이 문자열 형태로 저장 하는 경우가 많은데요, 그럴 때 아래와 같이 attribute를 특정 멤버 변수에 선언해주면 됩니다.

    using Newtonsoft.Json;
    using Newtonsoft.Json.Converters;
    
    public enum CompanyType {
        Apple,
        Samsung,
    }

    public class Company
    {
        [JsonConverter(typeof(StringEnumConverter))]
        public CompanyType CompanyType { get; set; }
    }

 

여기서 만일 해당 멤버 변수가 배열이나 리스트 형태라면 아래와 같이 Attribute를 지정해주면 됩니다.

    using Newtonsoft.Json;
    using Newtonsoft.Json.Converters;
    
    public enum CompanyType {
        Apple,
        Samsung,
    }

    public class Company
    {
        [JsonConverter(typeof(StringEnumConverter))]
        public CompanyType CompanyType { get; set; }
        
        [JsonProperty(ItemConverterType = typeof(StringEnumConverter))]
        public List<CompanyType> CompanyTypes { get; set; }
    }