(Kotlin) Serialization- Gson, Jackson
[Java] Jackson ObjectMapper Serialization
Jackson 역직렬화 시 발생할 수 있는 에러 ( jacksonObjectMapper() )
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 예제
1
2
3
4
5
6
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와 변수 이름이 같은 경우에도 @SerializedName
을 붙여주어야만 함.
This post is licensed under CC BY 4.0 by the author.