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