Android чтение дата класса из Firebase

Рейтинг: 0Ответов: 1Опубликовано: 05.03.2023

Есть список данных в дата классе UserModel, который я записываю в Firebase. Но прочитать обратно уже не получается, так как данные приходят в виде json. Как можно преобразовать обратно в дата класс?

data class UserModel(
    val id: Int = 0,
    var userFName: String = "",
    var userSName: String = ""
)

fun writeFirebase(myRef: DatabaseReference){
    val users:List<UserModel> = UserObject.getUsers()
    for (user in users) {
        myRef.push().setValue(user)
    }
}

fun readFirebase(myRef: DatabaseReference){
    myRef.addValueEventListener(object: ValueEventListener {
        override fun onDataChange(snapshot: DataSnapshot) {
            val children = snapshot.getChildren()
            for (child in children) {
                var user = child.getValue() //as UserModel
                Log.d("FireBase", "Value is: $user")
           }
        }

        override fun onCancelled(error: DatabaseError) {
            Log.w("FireBase", "Failed to read value.", error.toException())
        }
    })
}

И получается, что отпраляются данные в виде:

UserModel(id=1, userFName=FName1, userSName=SName1)

а приходят в виде:

{id=1, userFName=FName1, userSName=SName1}

Ответы

▲ 1Принят
val user = child.getValue(UserModel::class.java)