大家好我正在尝试解析从firestore中的集合返回的对象
val user = userSnapshot.toObject(User::class.java)
用户对象如下所示:
data class User(var companyId: String = "",
var email: String = "",
var isActive: Boolean = false,
var isSuperUser: Boolean = false,
var superUserId: String = "",
var userId: String = ""): Parcelable {
constructor(parcel: Parcel) : this(
parcel.readString(),
parcel.readString(),
parcel.readByte() != 0.toByte(),
parcel.readByte() != 0.toByte(),
parcel.readString(),
parcel.readString()) {
}
override fun writeToParcel(parcel: Parcel, p1: Int) {
parcel.writeString(companyId)
parcel.writeString(email)
parcel.writeByte(if (isActive) 1 else 0)
parcel.writeByte(if (isSuperUser) 1 else 0)
parcel.writeString(superUserId)
parcel.writeString(userId)
}
override fun describeContents(): Int {
return 0
}
companion object CREATOR : Parcelable.Creator<User> {
override fun createFromParcel(parcel: Parcel): User {
return User(parcel)
}
override fun newArray(size: Int): Array<User?> {
return arrayOfNulls(size)
}
}
}
奇怪的是所有的String字段都在工作,但是没有布尔字段获取来自响应的值。老实说,我不知道为什么会发生任何帮助,我们非常感激。
注意:来自服务器的布尔值为true,无论什么
,对象都为false答案 0 :(得分:2)
问题是kotlin生成的getter和setter访问布尔字段(或任何以开头的字段为此)。
如果字段以“ ”开头,则生成的getter和setter与字段未以 开头的情况不同。
例如,您的字段isActive
将有一个setter setActive
和一个getter isActive()
,它会使firebase中的序列化混乱。
尝试添加此@field:JvmField
,以便不会生成这些setter和getter。
@field:JvmField var isActive: Boolean = false,
@field:JvmField var isSuperUser: Boolean = false,
您还可以将字段重命名为Active
和SuperUser
(不包含)。