gpt4 book ai didi

android - 解析来自 firestore 的响应不起作用

转载 作者:行者123 更新时间:2023-11-29 16:42:52 26 4
gpt4 key购买 nike

大家好,我正在尝试解析从 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)
}
}
}

奇怪的是所有字符串字段都在工作,但没有一个 bool 字段采用来自响应的值。老实说,我不知道为什么会这样,非常感谢您的帮助。

注意:不管怎样,来自服务器的 bool 值都为真,对象为假

最佳答案

问题是 kotlin 生成的 getter 和 setter 用于访问 bool 字段(或任何以前缀 is 开头的字段)。当字段以“is”开头时,生成的 getter 和 setter 与字段不以 is 开头的情况不同。例如,您的字段 isActive 将有一个 setter setActive 和一个 getter isActive() 这会混淆 firebase 中的序列化。

尝试添加这个 @field:JvmField 这样就不会生成那些 setter 和 getter。

 @field:JvmField var isActive: Boolean = false,
@field:JvmField var isSuperUser: Boolean = false,

您还可以将字段重命名为 ActiveSuperUser(不带 is)。

关于android - 解析来自 firestore 的响应不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49924049/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com