java - 使用 .toObject 和 Firestore 中的通用类从 DocumentSnapshot 获取 POJO

标签 java firebase google-cloud-firestore

在 Firebase 实时数据库中,支持使用 GenericTypeIndicator 反序列化对象。有人可以阐明如何对 Firestore 做同样的事情吗?

我有一个文档快照,我想将其转换为参数化的 POJO。

这是我尝试这样做时抛出的错误

java.lang.RuntimeException: Could not deserialize object. Class com.thesportsbeing.thesportsbeing.screens.festadmin.eventslist.eventadmin.scoring.MatchScore has generic type parameters, please use GenericTypeIndicator instead. 

问题是 firestore 包中没有 GenericTypeIndicator,它存在于 realtime-database 包中。任何解决方法?或者把事情做好的东西会很棒。

MyClass 与此类似
public class MyClass<R extends SomeAbstractClass> {
    R someClassWhichExtendsAboveAbstractClass;
}

最佳答案

以下是对该问题和解决方法的讨论:
https://github.com/firebase/firebase-android-sdk/issues/222

最简单的方法是声明泛型类的子类:

class MyNonGeneric extends MyClass<R> {}

// Usage
snapshot.toObject(MyNonGeneric.class);

或者需要分别获取 POJO 的每个顶级属性并进行转换。

关于java - 使用 .toObject 和 Firestore 中的通用类从 DocumentSnapshot 获取 POJO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51941472/

相关文章:

java - 访问父类(super class)中子类的 protected 字段?

java - 在 Spring Data 中通过 @Modifying @Query 进行更新不起作用

node.js - 使用 Node/Express 从 Firebase 读取数据

python - PyJWT 返回无效的 token 签名

javascript - Firestore如何添加到子集合

firebase - Firestore Timestamp.toDate() 以 UTC 返回日期

java - 使用 Android ExpandableLayout 库

java - 即使在删除和复制新的 .war 文件后,Tomcat 仍会提供旧文件

java - 如何将用户重定向到 Cloud Firestore 中的特定 Activity ?

firebase - Flutter Firestore 地理查询