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()

 


참고자료

https://github.com/square/moshi/issues/132

https://bacassf.tistory.com/103

+ Recent posts