본문 바로가기

빈 구멍 채우기

[Retrofit2] Body로 ZonedDateTime 보내기

서버 개발자분이 api의 body 값으로 ZonedDateTime를 변환없이 그냥 보내면 된다고 해서 응??? 했는데... 역시나. 

 

https://jinseongsoft.tistory.com/191

 

(Java) Gson 사용시 ZonedDateTime JSON Serialize/Deserialize 방법

들어가며 Gson을 사용하여 ZonedDateTime 객체를 Serialize/Deserialize 하는 경우가 있다. public void test() { String json = new GsonBuilder().create().toJson(ZonedDateTime.now()); ZonedDateTime dateTim..

jinseongsoft.tistory.com

 

1) ZonedDateTime의 Serializer/Deserializer인 TypeAdapter를 별도로 만든다. >> 위 블로그에서 너무나 잘 나와있음.

2) GsonBuilder 생성 시 1)에서 만든 TypeAdapter를 등록한다. >> 위 블로그에서 너무나 잘 나와있음.

3) Retrofit.Builder()에 addConverterFactroy()로, GsonConverterFactory를 추가한다.

 

//Java
private Gson gson = new GsonBuilder()
	.registerTypeAdapter(ZonedDateTime.class, new ZonedDateTimeTypeAdapter())
    	.create();

//Kotlin
private val builder: Retrofit.Builder = Retrofit.Builder()

builder.addConverterFactory(GsonConverterFactory.create(gson))