.NET/ASP.NET
Enum 형을 JSON 응답으로 String 으로 표시하고자 할때..
ironman!
2023. 12. 4. 20:48
Web API 를 만든후 아래와 같은 클래스로 응답을 지정했더니 Enum 형이 숫자로 표기되는 문제가 발생하였다. 원하는 방법은 Enum 형에 지정된 값이 아닌 명이 표시되길 원했던 것이다.
응답 클래스
public class ResponseModel
{
public ResponseModel(ResponseState rs)
{
this.State = rs;
}
public ResponseModel()
{
}
public ResponseState State { get; set; }
public Object Result { get; set; }
}
public enum ResponseState
{
success,
failure
}
응답 결과
{
"state": 1,
"result": {
"accessToken": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJEUlNDb2RlIjoiMjAwNjciLCJSZXF1c3REYXRlIjoiMjAyMzEyMDEiLCJDb21wYW55Q29kZSI6IjEwMDAiLCJCdXNpbmVzc051bWJlciI6IjEwNDMyODg5MDciLCJBdWRpZW5jZSI6Imh0dHBzOi8vbG9jYWxob3N0OjcxNjIiLCJleHAiOjE3MDE3MTE2NjIsImlzcyI6Imh0dHBzOi8vbG9jYWxob3N0OjcxNjIiLCJhdWQiOiJodHRwczovL2xvY2FsaG9zdDo3MTYyIn0.1QqiV7cgxGaQlMEqqnFcqFwiAKSo5tNo1-uSGnbtqGVLmXkfWy8dFGmAKXAisBXDL_8zYBINBZZGoGr8-8abzw",
"expiration": 21600,
"type": "bearer"
}
}
내가 원하는 그림은 "state": "success" 가 전달되는 것이였다. 그래서 다음과 같이 변경하였더니 원하던 결과를 얻게 되었다.
변경 부분
- System.Text.Json.Serialization 를 사용 시에는 아래와 같이 지정
[JsonConverter(typeof(JsonStringEnumConverter))]
public ResponseState State { get; set; }
- Newtonsoft.Json 을 사용 시에는 아래와 같이 지정
[JsonConverter(typeof(StringEnumConverter))]
public ResponseState State { get; set; }
수정 결과
{
"state": "success",
"result": {
"accessToken": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJEUlNDb2RlIjoiMjAwNjciLCJSZXF1c3REYXRlIjoiMjAyMzEyMDEiLCJDb21wYW55Q29kZSI6IjEwMDAiLCJCdXNpbmVzc051bWJlciI6IjEwNDMyODg5MDciLCJBdWRpZW5jZSI6Imh0dHBzOi8vbG9jYWxob3N0OjcxNjIiLCJleHAiOjE3MDE3MTE2NjIsImlzcyI6Imh0dHBzOi8vbG9jYWxob3N0OjcxNjIiLCJhdWQiOiJodHRwczovL2xvY2FsaG9zdDo3MTYyIn0.1QqiV7cgxGaQlMEqqnFcqFwiAKSo5tNo1-uSGnbtqGVLmXkfWy8dFGmAKXAisBXDL_8zYBINBZZGoGr8-8abzw",
"expiration": 21600,
"type": "bearer"
}
}
참고 아티클 : https://code-maze.com/csharp-serialize-enum-to-string/