How to send Date object through Moshi JSON serializer?
아래와 같은 API의 Response를 Moshi
로 역직렬화 하려는 과정에서,
아래 에러가 발생했다.
java.lang.IllegalArgumentException:
Platform class java.util.Date requires
explicit JsonAdapter to be registered at
com.squareup.moshi.ClassJsonAdapter$1
.create(ClassJsonAdapter.java:65) ~[moshi-1.9.2.jar:na]
역직렬화를 수행하던 코드는 아래와 같고,
객체로 담을 Class는 아래와 같았다.
원인은 Moshi Adapter를 Build 해줄때,
위와 같은 RFC 3339
Format의 Date type Adapter를 추가해주지 않아 발생했다.
아래와 같이 Moshi
Adapter를 build()
하기 전에
RFC 3339
Date Formatter Adapter,
Rfc3339DateJsonAdapter
를 추가해주며 해결 했다.
KaKaoResponse kakaoUserInfoResponse =
new Moshi.Builder()
.add(Date.class, new Rfc3339DateJsonAdapter())
.build()
.adapter(KaKaoResponse.class)
.fromJson(response.body()
.source());