Android Firebase RealtimeDatabase检索快照对象异常

Android Firebase RealtimeDatabase检索快照对象异常,android,firebase,kotlin,firebase-realtime-database,Android,Firebase,Kotlin,Firebase Realtime Database,这是我的模型课 @Parcel data class ClientModel( var name: String? = "", var phone: String? = "", var princpalAddresse: String? = "", var homeAddresse: String? = "", var travailleAddresse: String

这是我的模型课

    @Parcel
data class ClientModel(
    var name: String? = "",
    var phone: String? = "",
    var princpalAddresse: String? = "",
    var homeAddresse: String? = "",
    var travailleAddresse: String? = "",
    var email: String? = "",
    var userToken: String? = "",
    var principalAddresseCoords: Pair<Double, Double>? = null,
    var homeAddresseCoords: Pair<Double, Double>?= null,
    var workAddresseCoords: Pair<Double, Double>? = null,
)
但是!当我尝试使用singleValueEventListener获取快照时,由于成对变量,我得到了异常

   val utilisationInfo =  snapshot.getValue(ClientModel::class.java) //todo CRASH
例外情况:

com.google.firebase.database.DatabaseException: Class kotlin.Pair does not define a no-argument constructor. If you are using ProGuard, make sure these constructors are not stripped.
数据库结构:


我认为firebase实时数据库将您的PrincipalAddressCoords视为长的列表,因此在您的客户端模型中PrincipalAddressCoords的值更改为emptyList(),并将类型更改为列表,正如@Sami Shorman所说,firebase获取了我的Pair实例并将其转换为list,而不是Hashmap!所以我改变了我的课堂模式:

var principalAddresseCoords: HashMap<String,Double>? = null,
var homeAddresseCoords: HashMap<String,Double >? = null,
var workAddresseCoords: HashMap<String,Double >? = null,
var principaAddressCoords:HashMap?=无效的
var homeAddresseCoords:HashMap?=无效的
var workAddresseCoords:HashMap?=无效的
要将数据作为Hashmap,我只需执行以下操作:

clientModel.workAddresseCoords =  HashMap<String,Double>().apply {
                    put("lat",lat)
                    put("long",long)
                }
clientModel.workAddresseCoords=HashMap().apply{
put(“lat”,lat)
put(“long”,long)
}
clientModel.workAddresseCoords =  HashMap<String,Double>().apply {
                    put("lat",lat)
                    put("long",long)
                }