Firebase Firestore:如何在 Android 上将文档对象转换为 POJO
Firebase Firestore : How to convert document object to a POJO on Android
使用实时数据库,可以做到这一点:
MyPojo pojo = dataSnapshot.getValue(MyPojo.Class);
作为映射对象的一种方法,如何使用 Firestore
来实现?
代码:
FirebaseFirestore db = FirebaseFirestore.getInstance();
db.collection("app/users/" + uid).document("notifications").get().addOnCompleteListener(task -> {
if (task.isSuccessful()) {
DocumentSnapshot document = task.getResult();
if (document != null) {
NotifPojo notifPojo = document....// here
return;
}
} else {
Log.d("FragNotif", "get failed with ", task.getException());
}
});
不确定这是否是最好的方法,但这是我目前的方法。
NotifPojo notifPojo = new Gson().fromJson(document.getData().toString(), NotifPojo.class);
编辑:我现在正在使用已接受答案中的内容。
有了 DocumentSnapshot
你可以做:
DocumentSnapshot document = future.get();
if (document.exists()) {
// convert document to POJO
NotifPojo notifPojo = document.toObject(NotifPojo.class);
}
Java
DocumentSnapshot document = future.get();
if (document.exists()) {
// convert document to POJO
NotifPojo notifPojo = document.toObject(NotifPojo.class);
}
科特林
val document = future.get()
if (document.exists()) {
// convert document to POJO
val notifPojo = document.toObject(NotifPojo::class.java)
}
请务必记住,您必须提供默认构造函数,否则您将遇到经典的反序列化错误。对于 Java 一个 Notif() {}
就足够了。对于 Kotlin 初始化你的属性。
使用实时数据库,可以做到这一点:
MyPojo pojo = dataSnapshot.getValue(MyPojo.Class);
作为映射对象的一种方法,如何使用 Firestore
来实现?
代码:
FirebaseFirestore db = FirebaseFirestore.getInstance();
db.collection("app/users/" + uid).document("notifications").get().addOnCompleteListener(task -> {
if (task.isSuccessful()) {
DocumentSnapshot document = task.getResult();
if (document != null) {
NotifPojo notifPojo = document....// here
return;
}
} else {
Log.d("FragNotif", "get failed with ", task.getException());
}
});
不确定这是否是最好的方法,但这是我目前的方法。
NotifPojo notifPojo = new Gson().fromJson(document.getData().toString(), NotifPojo.class);
编辑:我现在正在使用已接受答案中的内容。
有了 DocumentSnapshot
你可以做:
DocumentSnapshot document = future.get();
if (document.exists()) {
// convert document to POJO
NotifPojo notifPojo = document.toObject(NotifPojo.class);
}
Java
DocumentSnapshot document = future.get();
if (document.exists()) {
// convert document to POJO
NotifPojo notifPojo = document.toObject(NotifPojo.class);
}
科特林
val document = future.get()
if (document.exists()) {
// convert document to POJO
val notifPojo = document.toObject(NotifPojo::class.java)
}
请务必记住,您必须提供默认构造函数,否则您将遇到经典的反序列化错误。对于 Java 一个 Notif() {}
就足够了。对于 Kotlin 初始化你的属性。