반응형
코틀린 data class
코틀린의 data class는 아래처럼 생성자에 필드를 선언하는 식으로 작성하며, 파라미터가 없는 기본 생성자는 존재하지 않습니다.
data class EmployeeCreateRequest(
val departmentId: UUID,
val jobType: String,
val name: String,
val email: String
// ...
)
문제는 Jackson 라이브러리에서 default 생성자가 없는 클래스로 deserialize를 수행하면 아래처럼 에러 문구가 출력됩니다.
(no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
해결
자바에서는 Lombok을 이용해서 @NoArgsConstructor를 달아주면 해결이 되고
코틀린에서는 fasterxml / jackson-module-kotlin 라이브러리를 이용하여 깔끔하게 해결할 수 있습니다.
fasterxml / jackson-module-kotlin 이용 방법
1. 의존성 추가
compile "com.fasterxml.jackson.module:jackson-module-kotlin:2.9.+"
2. ObjectMapper에 Jackson 용 KotlinModule 등록
val mapper = ObjectMapper().registerModule(KotlinModule())
참고 문헌
https://www.kotlinresources.com/library/jackson-module-kotlin/
반응형