You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从Firestore读取数据转换为POJO时遭遇反序列化错误,如何解决?

问题解决:Firestore反序列化Number类型字段报错

错误原因

Firestore Android SDK不支持将文档字段反序列化到Number抽象类,必须使用具体的数值类型(如Int、Double),这就是触发Deserializing values to Number is not supported错误的核心原因。

解决方案

将数据类中所有Number类型的字段,替换为与Firestore文档字段匹配的具体数值类型:

修改后的NewObjektPojo数据类

data class NewObjektPojo(
    val objektHauptBild: String? = "",
    val objektName: String? = "",
    val objektBeschreibung: String? = "",
    val objektBilder: MutableList<String>? = null,
    // 根据Firestore实际字段类型选择:整数用Int,带小数的数值用Double
    val objektZimmer: Int? = 0,
    val objektGroeße: Double? = 0.0,
    val objektPreis: Double? = 0.0,
    val objektLatitude: Double? = null,
    val objektLontitude: Double? = null,
)

关键说明

  • 对照你Firestore中的字段类型调整:比如objektZimmer如果是整数(如1、3)就用Int,objektGroeße如果是带小数的数值(如85.5、120.0)就用Double。
  • 必须保证数据类字段类型与Firestore文档字段类型完全一致,否则仍会出现反序列化错误。

验证代码

原读取数据的逻辑无需改动,修改数据类后即可正常执行:

db.collectionGroup("Houses").get().addOnSuccessListener { snapshot ->
    for(document in snapshot.documents)
    {
        val house = document.toObject(NewObjektPojo::class.java)
        objektListe.add(house!!)
    }
}

内容的提问来源于stack exchange,提问作者Captai-N

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 08:06:05