json (5) 썸네일형 리스트형 Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 1 path $ 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().. Expected BEGIN_OBJECT but was STRING at line 1 column 1 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라.. [웹에서 데이터 가져오기] 3. GSON 1. 개요 앞서 JSON 포맷의 데이터를 다루었습니다. 그러나 해당 데이터는 그대로 사용하기엔 무리가 있습니다. 이때 GSON 라이브러리를 사용하면 JSON 객체를 직렬화 및 역직렬화할 수 있으며, 이를 통해 데이터를 처리할 수 있습니다. GSON 라이브러리는 JSON 문자열을 객체로 변환할 수 있도록 해줍니다. 2. 사용법 1) 라이브러리 추가 먼저 build.gradle의 dependencies 내부에 GSON 라이브러리를 추가해야 합니다. implementation 'com.google.code.gson:gson:2.8.6' 또한 인터넷을 사용하기 때문에 매니페스트 파일에 다음과 같이 코드를 추가합니다. [웹에서 데이터 가져오기] 2. Volley 1. 개요 Volley는 안드로이드 앱에서 네트워킹을 더 쉽고 더 빠르게 하는 HTTP 라이브러리입니다. 이 라이브러리는 웹 요청과 응답을 단순화해줍니다. 2. 사용법 먼저 Request 객체를 만들고, 이 객체를 RequestQueue에 넣어줍니다. 그러면 RequestQueue가 알아서 스레드를 생성하여 서버에 요청하고 응답을 받아줍니다. 응답이 오면 RequestQueue에서 Request에 등록된 ResponseListener로 응답을 전달해줍니다. 또한 만일 응답을 받았을 때 처리할 메서드를 만들었다면 응답이 왔을 때 그 메서드가 자동으로 호출됩니다. 따라서 사용자는 별도의 스레드 관리뿐 아니라 UI 접근을 위한 Handler를 다룰 필요도 없습니다. 3. 예시 아래 코드를 통해 자세한 사용법을.. [웹에서 데이터 가져오기] 1. JSON 1. 개요 자바스크립트 객체 문법으로 구조화된 데이터를 표현하기 위한 문자 기반의 표준 포맷입니다. 웹에서 데이터를 전송할 때 일반적으로 사용합니다. JSON 포맷의 데이터는 기본적으로 다음과 같이 표현됩니다. 1) 객체는 중괄호 {}로 표기합니다. 2) 배열은 대괄호 []로 표기합니다. 3) 각 변수는 변수 이름과 변수의 값으로 구성되어 있으며, 콜론 : 로 구분합니다. 4) 속성이 여러 개인 경우 쉼표 , 로 구분합니다. 2. 예시 아래 텍스트는 영화진흥위원회의 API 서비스를 사용해 영화 정보를 조회한 결과입니다. 이 데이터를 통해서 설명드리겠습니다. // 1) TopMovieList { "movieListResult" : { // 2) movieListResult "totCnt":2,"source.. 이전 1 다음