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的主要内容,如果未能解决你的问题,请参考以下文章