在我的Firebase实时数据库中,我有两个用于调试和发布版本的主要分支。 debug分支工作正常,但是当获取release分支时,price
字段在转换为下面的map或list之后总是具有零值,而其他三个字段反映来自DB的正确值。请注意,在DB上使用整数或小数字段没有区别。这就是我的数据:
这是我的问题数据类
data class JsonProducto(var id: String,
var name: String,
var description: String,
var price: Double) : Parcelable {
constructor() : this(
"id",
"name",
"desc",
0.0
)
constructor(source: Parcel) : this(
source.readString(),
source.readString(),
source.readString(),
source.readDouble()
)
override fun describeContents() = 0
override fun writeToParcel(dest: Parcel, flags: Int) = with(dest) {
writeString(id)
writeString(name)
writeString(description)
writeDouble(price)
}
companion object {
@JvmField
val CREATOR: Parcelable.Creator<JsonProducto> = object : Parcelable.Creator<JsonProducto> {
override fun createFromParcel(source: Parcel): JsonProducto = JsonProducto(source)
override fun newArray(size: Int): Array<JsonProducto?> = arrayOfNulls(size)
}
}
}
我还尝试了两种方法将数据快照转换为我的类,两者都有相同的结果:
序列化方式编号1
val mapper = object : GenericTypeIndicator<HashMap<String, JsonProducto>>() {}
val list = arrayListOf<JsonProducto>()
val map = dataSnapshot.getValue(mapper)
map?.forEach {
list.add(it.value)
}
序列化方式编号2
val list: MutableList<JsonProducto> = mutableListOf()
dataSnapshot.children.mapNotNullTo(list) {
it.getValue<JsonProducto>(JsonProducto::class.java)
}
为什么会出现这种行为?我很感激你的时间。
编辑:
仍在尝试弄清楚这里发生了什么,我做了一些实验,但结果仍让我感到震惊:我只在工作分支的一个产品中将DB字段的名称更改为precio
,并且将数据类成员重命名为该成员,现在除了重命名的字段外,所有字段都显示为零。但是,无论如何,非工作分支仍显示零。这很奇怪。