从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
相关产品推荐
相关产品推荐

