Firebase 以 Kotlin 数据类型 Any 获取数据
Firebase fetching data as Kotlin data type Any
我正在尝试从 Firebase 实时数据库一次性获取整个节点作为类型 Any
。我使用的代码如下:
val offerDetails = p0.child(querykey).child("Offers").child(offerkey).getValue(Any::class.java)
Log.d("MyMessage",
offerDetails.toString())
得到的数据完美如Logreturns:
{offer=90, ****ID=********, deliveryHour=0, mobile=******, type=2, deliveryMinute=15, offerComment=******}
但是,我无法获取此处的报价、类型等个人数据。有人可以帮我吗?
P.S。我可以从 Firebase 单独获取每个数据点。但我试图避免这种情况,而是一次获得整个节点。
当您使用以下代码行时:
val offerDetails = p0.child(querykey).child("Offers").child(offerkey).getValue(Any::class.java)
对象的类型是Any
和notOffer
,所以你可以访问它的属性。当您使用时:
Log.d("MyMessage", offerDetails.toString())
您只是在 logcat 中打印 offerDetails
对象的字符串表示形式。如果您需要访问它的属性,那么您应该将该对象转换为 Offer
.
类型的对象
Log.d("MyMessage", (offerDetails as Offer).offer)
通过这种方式,您告诉编译器该对象的类型为 Offer
而不是 Any
。在这种情况下,logcat 中的输出将是:
90
编辑:
您还可以使用以下代码行访问属性:
val offer = p0.child(querykey).child("Offers").child(offerkey).child("offer").getValue(String::class.java)
Log.d("MyMessage", offer)
logcat 中的相同输出 (90
)。
您的对象很可能作为 Map<String, Object>
对象返回。也许尽可能使用地图 read/write 它比 Any 对象更好
我正在尝试从 Firebase 实时数据库一次性获取整个节点作为类型 Any
。我使用的代码如下:
val offerDetails = p0.child(querykey).child("Offers").child(offerkey).getValue(Any::class.java)
Log.d("MyMessage",
offerDetails.toString())
得到的数据完美如Logreturns:
{offer=90, ****ID=********, deliveryHour=0, mobile=******, type=2, deliveryMinute=15, offerComment=******}
但是,我无法获取此处的报价、类型等个人数据。有人可以帮我吗?
P.S。我可以从 Firebase 单独获取每个数据点。但我试图避免这种情况,而是一次获得整个节点。
当您使用以下代码行时:
val offerDetails = p0.child(querykey).child("Offers").child(offerkey).getValue(Any::class.java)
对象的类型是Any
和notOffer
,所以你可以访问它的属性。当您使用时:
Log.d("MyMessage", offerDetails.toString())
您只是在 logcat 中打印 offerDetails
对象的字符串表示形式。如果您需要访问它的属性,那么您应该将该对象转换为 Offer
.
Log.d("MyMessage", (offerDetails as Offer).offer)
通过这种方式,您告诉编译器该对象的类型为 Offer
而不是 Any
。在这种情况下,logcat 中的输出将是:
90
编辑:
您还可以使用以下代码行访问属性:
val offer = p0.child(querykey).child("Offers").child(offerkey).child("offer").getValue(String::class.java)
Log.d("MyMessage", offer)
logcat 中的相同输出 (90
)。
您的对象很可能作为 Map<String, Object>
对象返回。也许尽可能使用地图 read/write 它比 Any 对象更好