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

Posted

技术标签:

【中文标题】com.google.firebase.database.DatabaseException:无法将 java.lang.String 类型的对象转换为数据类对象 KOTLIN【英文标题】:com.google.firebase.database.DatabaseException: Can't convert object of type java.lang.String to type Data class object KOTLIN 【发布时间】:2021-07-20 06:48:00 【问题描述】:

我在同一问题上阅读过其他 cmet,但没有一个涉及像我这样的情况

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

      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) 

    

【问题讨论】:

那个 JSON 无效,请格式化,以便我们为您提供帮助(尝试格式化但无法猜测整个内容) 我已经添加了 firebase 参考 我正在使用 recyclerview 查看基于text的字母列表 但是,它不能创建字符串NameOfSymbols" : "group of alphabets的数据类 所以,我的问题是如何排除字符串,或者是否有不同的解决方法?我已经尝试过***.com/a/67272373/13617469 的回答,但没有用 【参考方案1】:

如果你在听

"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>

【讨论】:

@RaphaelInyang 你复制了你自己的问题,然后用一个不是问题的解决方案自己回答,哇!

以上是关于com.google.firebase.database.DatabaseException:无法将 java.lang.String 类型的对象转换为数据类对象 KOTLIN的主要内容,如果未能解决你的问题,请参考以下文章