1. 발생 상황
private val moshi = Moshi.Builder()
.add(KotlinJsonAdapterFactory())
.build()
private val retrofit = Retrofit.Builder()
.addConverterFactory(MoshiConverterFactory.create(moshi))
.baseUrl(BASE_URL)
.build()
REST 통신으로 웹 서버에서 받은 JSON 데이터를 받아서 안드로이드 Moshi 라이브러리로 사용하고자 할 때, 아래와 같은 에러가 발생했다!
Use jsonreader.setlenient(true) to accept malformed json at path $[0].null
2. 발생 원인
열심히 구글링을 해본 결과...
Retrofit 빌드할 때 사용한 라이브러리로 JSON 데이터를 사용할 수 없을 때 발생하는 에러라고 한다.
3. 해결 방법
- Moshi로 Retrofit을 빌드하는 경우 :
asLenient()
private val moshi = Moshi.Builder()
.add(KotlinJsonAdapterFactory())
.build()
private val retrofit = Retrofit.Builder()
.addConverterFactory(MoshiConverterFactory.create(moshi).asLenient())
.baseUrl(BASE_URL)
.build()
- GSON으로 Retrofit을 빌드하는 경우 :
setLenient()
private val gson : Gson = GsonBuilder()
.setLenient()
.create()
private val retrofit = Retrofit.Builder()
.baseUrl(API_URL)
.client(client)
.addConverterFactory(GsonConverterFactory.create(gson))
.build()
참고자료