반응형

코틀린 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/

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • shared트위터 공유하기
  • shared
  • 카카오스토리 공유하기