1. 발생 원인
JSON 포멧 데이터를 GSON 라이브러리를 통해 사용할 때 발생할 수 있는 오류입니다.
2. 해결 방법
retrofit 객체를 만들 때 gson 객체에 속성을 추가해서 설정해주면 됩니다.
먼저 아래처럼 retrofit 객체를 만들어줍니다.
sRetrofit = Retrofit.Builder()
.baseUrl(API_URL)
.client(client)
.addConverterFactory(GsonConverterFactory.create())
.build()
이때 GsonConvertFactory.create() 부분에 gson 객체를 만들어서 넣어주면 됩니다.
gson 객체는 다음과 같이 만들어줍니다.
val gson : Gson = GsonBuilder()
.setLenient()
.create()
이때 setLenient() 속성을 설정해줍니다.
Gson은 원래 RFC 4627에 의해 구체화된 JSON 만 허용할 정도로 엄격합니다(strict)
그러나 setLenient 속성을 설정하면 parser로 하여금 허용을 더 자유롭게 해줍니다.
(By default, Gson is strict and only accepts JSON as specified by RFC 4627 . This option makes the parser liberal in what it accepts.)
이후 만들어준 gson 객체를 retrofit 객체에 설정해주면 됩니다.
sRetrofit = Retrofit.Builder()
.baseUrl(API_URL)
.client(client)
.addConverterFactory(GsonConverterFactory.create(gson))
.build()
728x90
반응형
'Android > 에러' 카테고리의 다른 글
java.lang.NoSuchMethodError: No virtual method elapsedNow()D in class Lkotlin/time/TimeMark (0) | 2021.12.30 |
---|---|
could not find Fragment constructor (0) | 2021.12.22 |
Missing required view with ID (0) | 2021.12.21 |
Expected BEGIN_OBJECT but was STRING at line 1 column 1 (0) | 2021.12.20 |
android:exported (0) | 2021.12.13 |