Android에서 Retrofit 사용 중에 다음 🚨에러가 발생했다.

MalformedJsonException

이 에러는 서버로부터 받은 Response data의 포맷이 JSON 포맷과 맞지 않아서 발생하는 문제라고 한다.

 

 

 

나는 Retrofit2Gson 라이브러리를 함께 사용 중인데, 

현재 서버로부터 받는 데이터의 형식이 이미 JSON 포맷이 아니었기 때문에 다음의 설정 값은 할당된 상태였다.

대부분의 솔루션들을 살펴보면, Gson을 선언할 때 .setLenient() 값을 넣으면 해결된다고 했지만, 나의 경우엔 해결되지 않았다.

 

 

 

추가로, Gson이 JSON 포맷에 대해 느슨하게 검사(?)하게 하는 설정 값을 넣어도 해결되지 않았다.

이렇게 설정하면, 서버의 응답 데이터가 JSON 형식이 아니어도 봐준다(?)고 한다.

 

 

 

🛠결국 방법은, ScalarsConverterFactory를 사용해서 해결했다.

이녀석을 사용하려면 Gradle 파일에 다음을 추가해야 한다.

처음부터 서버 프로그램에서 응답 데이터를 JSON 형태로 보내주면 깔끔하게 해결되겠지만,

상황에 따라 서버 수정이 불가능하다면, 클라이언트 쪽에서 어떻게든 해야한다.

서버로부터 받는 응답이 Plan-text 또는 Plan-string 형태라면 위 라이브러리를 사용을 고려하면 좋겠다.