🌱 dreaming DiNO
[Kotlin] API호출해서 받은 JSON Data파싱하기 본문
레트로핏 이용해서 외부 API 호출해서 받은 JsonData를 파싱해보자!
call?.enqueue(object : retrofit2.Callback<JsonElement>{
override fun onResponse(call: Call<JsonElement>, response: Response<JsonElement>) {
when (response.code()){
200 -> {
Log.d(Constant.TAG, "RetrofitManager - 통신 200 성공! \n" +
"response: ${response.body()}")
//jsonData처리 부분 // 파싱
response.body()?.let{ responseBody ->
val body = responseBody.asJsonObject
val jsonArray = body.getAsJsonArray("results")
val sizeOfJsonArray = jsonArray.size()
Log.d(TAG, "받아온 jsonArray 갯수: $sizeOfJsonArray")
val photoDataArray = arrayListOf<Photo>()
for(i in 0..jsonArray.size()-1){
val resultObject = (jsonArray.get(i)).asJsonObject
val user = resultObject.get("user").asJsonObject
val author = user.get("username").asString
val likesCount = resultObject.get("likes").asInt
val createdAt = resultObject.get("created_at").asString
val urls = resultObject.get("urls").asJsonObject
val thumbnail = urls.get("thumb").asString
//Log.d(TAG, "=======잘 파싱 되었나? author: $author, likeCounts: $likesCount, createdAt: $createdAt ,thumbnail: $thumbnail")
//파싱한 jsonData를 photo로 만들어주기
val photoItem = Photo(
author = author,
likesCount = likesCount,
createdAt = createdAt,
thumbnail = thumbnail
)
photoDataArray.add(photoItem)
}
completion(RESPONSE_STATE.OKAY, photoDataArray)
}
}
else -> {
Log.d(Constant.TAG, "RetrofitManager - 통신 ${response.code()} 실패!")
completion(RESPONSE_STATE.FAIL, null )
}
}
}
override fun onFailure(call: Call<JsonElement>, t: Throwable) {
Log.d(Constant.TAG, "RetrofitManager - api 아예 통신 실패 / t: $t")
completion(RESPONSE_STATE.FAIL, null )
}
})
'Android' 카테고리의 다른 글
[Kotlin] Splash Api 호출후 받은 JSON data recyclerView + 검색히스토리 추가 (0) | 2021.12.13 |
---|---|
[Kotlin] 람다식 / SAM변환 /확장함수 (0) | 2021.12.09 |
[Kotlin] Retrofit - Logging Interceptor 의 필요성 (0) | 2021.12.07 |
[Kotlin] Retrofit (레트로핏) 이란? (0) | 2021.11.24 |
[Kotlin] 기본문법-2 (0) | 2021.11.24 |