【问题标题】:Parsing response from firestore not working解析来自 Firestore 的响应不起作用
【发布时间】:2018-04-19 14:50:07
【问题描述】:

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

奇怪的是所有字符串字段都在工作,但没有布尔字段获取来自响应的值。老实说,我不知道为什么会发生这种情况,非常感谢任何帮助。

注意:来自服务器的布尔值是真,对象无论如何都是假

【问题讨论】:

    标签: android kotlin google-cloud-firestore


    【解决方案1】:

    问题是 kotlin 生成的 getter 和 setter 用于访问布尔字段(或任何以前缀 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)。

    【讨论】:

    • Levi - 非常感谢你这样做。
    猜你喜欢
    • 2015-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多