반응형
공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
Expected a string but was BEGIN_ARRAY at line 1 column 2 path $
저는 Retrofit 을 사용해서 jsonarray를 response 할 때 발생했습니다.
위 에러 발생 이유
reponse 는
[{
"dateTime" : "11/14/18 00:00:00",
"value" : "0"
},{
"dateTime" : "11/15/18 00:00:00",
"value" : "5"
},{
"dateTime" : "11/16/18 00:00:00",
"value" : "17"
},{
"dateTime" : "11/17/18 00:00:00",
"value" : "40"
},{
"dateTime" : "11/18/18 00:00:00",
"value" : "0"
},{
"dateTime" : "11/19/18 00:00:00",
"value" : "77"
},{
"dateTime" : "11/20/18 00:00:00",
"value" : "44"
},{
"dateTime" : "11/21/18 00:00:00",
"value" : "41"
},{
"dateTime" : "11/22/18 00:00:00",
"value" : "47"
},{
"dateTime" : "11/23/18 00:00:00",
"value" : "61"
},{
"dateTime" : "11/24/18 00:00:00",
"value" : "37"
},{
"dateTime" : "11/25/18 00:00:00",
"value" : "4"
},{
"dateTime" : "11/26/18 00:00:00",
"value" : "44"
},{
"dateTime" : "11/27/18 00:00:00",
"value" : "60"
},{
"dateTime" : "11/28/18 00:00:00",
"value" : "58"
},{
"dateTime" : "11/29/18 00:00:00",
"value" : "44"
},{
"dateTime" : "11/30/18 00:00:00",
"value" : "65"
},{
"dateTime" : "12/01/18 00:00:00",
"value" : "0"
},{
"dateTime" : "12/02/18 00:00:00",
"value" : "0"
},{
"dateTime" : "12/03/18 00:00:00",
"value" : "21"
},{
"dateTime" : "12/04/18 00:00:00",
"value" : "7"
},{
"dateTime" : "12/05/18 00:00:00",
"value" : "0"
},{
"dateTime" : "12/06/18 00:00:00",
"value" : "0"
},{
"dateTime" : "12/07/18 00:00:00",
"value" : "0"
},{
"dateTime" : "12/08/18 00:00:00",
"value" : "0"
},{
"dateTime" : "12/09/18 00:00:00",
"value" : "0"
},{
"dateTime" : "12/10/18 00:00:00",
"value" : "0"
},{
"dateTime" : "12/11/18 00:00:00",
"value" : "0"
},{
"dateTime" : "12/12/18 00:00:00",
"value" : "0"
},{
"dateTime" : "12/13/18 00:00:00",
"value" : "0"
}]
이런 JsonArray 인데 retrofit @GET 에서 제대로 값을 받지 못해서 발생한 듯 합니다.
@GET 메소드를 Call<String> methodName(....); 이렇게 만들어서 그랬습니다.
해결 방법
위 데이터를 보면 dateTime 과 value 를 가지는 jsonObject 들이 모인 jsonArray이죠?
1. 먼저 jsonObject 값에 대응할 데이터 클래스를 만듭니다.
저는 간단하게 코틀린으로 만들었습니다.
data class UserData(val dateTime : String, val value : String)
자바로 만드실 경우 필드와 생성자, getter를 만들면 되겠죠?
2. @GET 의 리턴타입 변경
Call<String> -> Call<List<UserData>> 로 변경합니다.
그리고 기존 사용하던대로 사용하면 끝! 입니다.
이상입니다. 감사합니다.
반응형
'안드로이드' 카테고리의 다른 글
안드로이드 fragment에서 onBackPressed() 메소드 추가하기, 뒤로가기버튼 기능 추가 (0) | 2019.01.07 |
---|---|
안드로이드 Fragment setOrientation landscape 프래그먼트 오리엔테이션 항상 가로 (0) | 2019.01.04 |
안드로이드 프로가드 적용 방법과 에러 발생 시 해결 방법 android studio apply proguard (0) | 2019.01.03 |
안드로이드 이미지, 동영상 동적 삭제 File delete(), exists(), how to delete file(image, video) dynamically (0) | 2018.12.28 |
안드로이드 ImageView 가로세로 길이 같이 맞추는 법 (0) | 2018.12.21 |