지난 포스팅에서 key값으로 저장했을 때 접근하지 못해서
0, 1, 2와 같은 list의 형태로 저장을 해놓은 과거의 나
근데 이제 알아냈어요!
사진에서와 같이 각각의 데이터의 key 값인 -My1CqVip8Y4pDNElxAQ, -MyDS0h0VDWRyWT_vF2g에
접근하려고 하였는데 지난번에는 실패했습니다ㅠ
시도한 방법
data class FriendListDAO(
@SerializedName("name")
val friendInfo: List<FriendDAO>
)
data class FriendDAO(
@SerializedName("key")
var key: String = "",
@SerializedName("name")
val name: String = "",
@SerializedName("image_path")
val imagePath: String? = null
)
name으로 받고 내부의 데이터는 List 형식으로 받게끔 해놓았는데
사실 잘못된 부분은
1. name에 매핑되지도 않음
2. jsonObject는 array로 변경할 수 없다는 문구가 출력됨
2번의 문구를 보고 딱! 생각난 것은
각각의 jsonObject로 데이터가 넘어오는 것
-> jsonObject를 파싱해서 데이터를 넣어주면 되겠다.
private fun loadFriends() {
viewModelScope.launch {
val friends = async { friendRepository.getFriends() }
val response = friends.await()
val responseFriends = JSONObject(response.body()?.string())
val jsonFriendList = arrayListOf<FriendDAO>()
responseFriends.keys().forEach { key ->
val jsonFriend = responseFriends.getJSONObject(key)
jsonFriendList.add(FriendDAO(
key = jsonFriend.getString("key"),
name = jsonFriend.getString("name"),
imagePath = jsonFriend.getString("image_path")))
}
_friends.value = jsonFriendList
}
}
jsonObject.keys()는
-My1CqVip8Y4pDNElxAQ, -MyDS0h0VDWRyWT_vF2g와 같은 Key 값을 가리킵니다.
forEach를 통해 각각의 key로 jsonObject 들에 접근해야 합니다.
그러기 위해서는 getJSONObejct(key)를 통해 jsonObject를 가져오고
가져온 jsonObject에 저장된 데이터들을 가져오면 끗!
'Android > note' 카테고리의 다른 글
[Android] Fragment -> DialogFragment -> Fragment 데이터 처리 (0) | 2022.10.10 |
---|---|
[Android] Android Studio의 open file list 가 안보일때 (0) | 2022.07.10 |
[android] Firebase Realtime Database를 REST로 사용할 때 key값에 접근하지 못한 사람 (0) | 2022.04.06 |
[Android] RecyclerView의 호출 순서 (0) | 2022.03.30 |
Uni-Directional Architecture (0) | 2022.02.24 |