[Kotlin] Serialization: Gson, Jackson
[Java] Jackson ObjectMapper Serialization
Jackson 역직렬화 시 발생할 수 있는 에러 ( jacksonObjectMapper() )
```javastacktrace
InvalidDefinitionException: Cannot construct instance of `com.test.example.data.Coffee` (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
```
- redis에서 받아와서 kotlin data 클래스인 Coffee에 넣으려고 하는데 발생
- Jackson이 Deserialize 하려면 default constructor가 있어야 하는데, Kotlin data class에는 이게 존재하지 않기 때문에 발생하는 에러임
- 해결 방법은? https://github.com/FasterXML/jackson-module-kotlin
- 요약하면 그냥 ObjectMapper() 말고 jacksonObjectMapper()를 쓰면 됨!
gson 예제
```kt
private val gson = GsonBuilder()
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
.setDateFormat("yyyy-MM-dd'T'HH:mm:ss'.000'XXX") // Date 타입으로 바로 매핑하기 위해 지정. 이 형식은 ISO 8601
.create();
```
`` LOWER_CASE_WITH_UNDERSCORES``는 쓰지 않는 것을 권장함. release build하면서 minify가 작동하면 변수 이름이 다 뭉개져서 심지어 json key와 변수 이름이 같은 경우에도 ``kt @SerializedName``을 붙여주어야만 함.
'Java Stack > Kotlin' 카테고리의 다른 글
[Kotlin] Kotlin Coroutines (with Spring WebFlux) (0) | 2021.08.29 |
---|---|
[Kotlin] java의 static final 변수에 대응되는 것은? (0) | 2021.02.11 |
[Kotlin] 제네릭 : 변성(variance), 타입 프로젝션(type projection) (1) | 2017.12.08 |
[Kotlin] 제네릭 : 타입 파라미터 소거(erasure), inline 실체화(reified) (1) | 2017.12.08 |
[Kotlin] 컬렉션과 배열 (0) | 2017.12.07 |