Android/에러
Expected BEGIN_OBJECT but was STRING at line 1 column 1
닉네임간편
2021. 12. 20. 13:22
1. 발생 원인
retrofit을 사용해서 데이터를 전달받을 때, response로 설정한 값과 들어온 값의 자료형이 다를 때 생기는 오류입니다.
예를 들어 제가 response에 해당하는 데이터 클래스를 다음과 같이 했다고 가정하겠습니다.
data class RefrigeratorResult(
val beerImgUrl: BeerImage,
val nameKr: String,
val beerId: Int
)
그런데 데이터가 실제로는 이런 형식으로 전달된다고 하겠습니다.
data class RealRefrigeratorResult(
val beerImgUrl: String,
val nameKr: String,
val beerId: Int
)
이때 저는 beerImgUrl 이라는 변수를 BeerImage라는 객체로 선언했는데, 실제로 들어온 값은 String 자료형이었습니다. 따라서 이때 이 오류가 발생합니다.
2. 해결 방법
이 둘을 통일시켜주면 됩니다.
위 예시로 설명하자면, beerImgUrl 이 String 자료형으로 들어오기 때문에, 이를 BeerImage라는 객체가 아니라 String으로 바꾸어주면 됩니다.
728x90
반응형