【问题标题】:com.google.firebase.database.DatabaseException: Can't convert object of type java.lang.String to type Data class object KOTLINcom.google.firebase.database.DatabaseException:无法将 java.lang.String 类型的对象转换为数据类对象 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的数据类
  • 所以,我的问题是如何排除字符串,或者是否有不同的解决方法?我已经尝试过stackoverflow.com/a/67272373/13617469 的回答,但没有用

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


【解决方案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 你复制了你自己的问题,然后用一个不是问题的解决方案自己回答,哇!
猜你喜欢
  • 2017-03-19
  • 1970-01-01
  • 1970-01-01
  • 2020-08-17
  • 2021-05-02
  • 2018-04-09
  • 2020-09-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多