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)

对象的类型是AnynotOffer,所以你可以访问它的属性。当您使用时:

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)。

Firebase Supported Data Types

您的对象很可能作为 Map<String, Object> 对象返回。也许尽可能使用地图 read/write 它比 Any 对象更好