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/
'.NET > ASP.NET' 카테고리의 다른 글
| “Uncaught SyntaxError: Cannot use import statement outside a module” (0) | 2023.12.10 |
|---|---|
| ASP.NET Core / cshtml 파일 수정 후 재빌드 ? (0) | 2023.12.07 |
| [Content-Type] x-www-form-urlencoded 을 지원하는 API (0) | 2023.12.03 |