com.google.firebase.database.DatabaseException:无法将 java.lang.String 类型的对象转换为数据类对象 KOTLIN

时间:2021-04-26 22:05:42

标签: android firebase kotlin firebase-realtime-database data-class

我已经阅读了关于同一问题的其他评论,但没有一个涉及像我这样的情况

在我这里,下面描述了数据的结构

      val ref: DatabaseReference? = Firebase.database.getReference("symbols/${alphabets}")
{
"symbols" : {
   "alphabets" : {
   "a" : {
       "available" : true,
       "text" : "A",
       "timestamp" : 1.512686825309134E9
   },
   "b" : {
       "available" : true,
       "text" : "B",
       "timestamp" : 1.512687248764272E9
   }

"NameOfSymbols" : "group of alphabets"
   }
}
}
<块引用>

数据列表继续,然后字符串在对象的末尾

*我的显示错误的原因是它无法将字符串 "NameOfSymbols" : "alphabets" 转换为数据类中指定的对象

那么,有什么办法呢,我用的是kotlin

有没有一种方法可以排除子值的那部分,而我只得到数据类中指定的值?

数据类

data class alphabets(
    val name: Names,
var NameOfSymbols: String? = null) {
    data class Names(

        var available: Boolean? = null,
        var text: String? = null,
        var timestamp: Long? = null) {

    }
}

1 个答案:

答案 0 :(得分:0)

如果你正在听

"symbols/alphabets"

那么里面的孩子是:

"a" : {
   "available" : true,
   "text" : "A",
   "timestamp" : 1.512686825309134E9
}

在这种情况下,这是一个 Map<String, Any>,我们可以根据需要将 Any 定义为特定的 data class

data class Names(
    val available: Boolean? = null,
    val text: String? = null,
    val timestamp: Long? = null
)

然后您必须将快照转换为:

Map<String, Names>