DeSerialize Kotlin Enum field

공부는 혼자하는 거·2023년 1월 16일
0

JAVA & Kotlin Tip

목록 보기
9/11

간단히 Request 요청을 받는 DTO class 가 있다고 치자.

data class ProfileSignUpDto(
    @field:NotEmpty(message = AccountErrorCode.ErrorMessage.USERNAME_REQUIRED_MESSAGE)
    @field:Size(min = 3, max = 15, message = AccountErrorCode.ErrorMessage.USER_PROFILE_USERNAME_SIZE_MESSAGE)
    @field:Pattern(
        regexp = Regex.USERNAME_PATTERN,
        message = AccountErrorCode.ErrorMessage.USER_PROFILE_USERNAME_PATTERN_MESSAGE
    )
    @field:Pattern(
        regexp = Regex.USERNAME_PATTERN,
        flags = [Pattern.Flag.CASE_INSENSITIVE],
        message = AccountErrorCode.ErrorMessage.USERNAME_NOT_CONTAINS_MUNUTE_MESSAGE
    )
    val username: String,
    val country:Country?,
    val genre:Genre?,

)

이 data class에는 Country라는 enum class가 필드로 선언되어있다. 나는 요청과 응답을 enum의 field로 받고 처리하기 위해, @JsonValue를 활용했다.

enum class Country(
    @JsonValue val value: String,
) {
    USA("United States of America"), 

정상적으로 문자열 요청이 enum으로 잘 매핑돼서 들어오는 걸 확인했다.
문제는 이 data class에서 구조분해할당할 때.. 발생했다.

        val (username, country, genre) = profileSignUpDto

componentN 함수가 country를 못 찾는 이슈였는데 , 갑자기 해결됐다?????? 일단 조금 더 테스트해보고 다시 작성..

참고

https://stackoverflow.com/questions/66419950/serialize-enum-field-into-json-in-kotlin

profile
시간대비효율

0개의 댓글