Android 添加和检索具有嵌套字段的对象(Firestore)
我对CloudFireStore很陌生,但我正在努力把它学好 有人能解释一下我如何在文档中添加一个对象(带有嵌套字段),然后检索/取回它吗 我知道如何通过Android 添加和检索具有嵌套字段的对象(Firestore),android,firebase,google-cloud-firestore,Android,Firebase,Google Cloud Firestore,我对CloudFireStore很陌生,但我正在努力把它学好 有人能解释一下我如何在文档中添加一个对象(带有嵌套字段),然后检索/取回它吗 我知道如何通过Hashmap和add()方法添加数据(例如字符串),并使用get()方法将其取回,但我对对象一无所知 任何帮助都将不胜感激。 谢谢 编辑:我研究了android开发者文档,找到了添加带有嵌套字段的对象的解决方案。但现在我正挣扎着如何找回它们。我尝试了以下代码: DocumentReference docRef = db.collection
Hashmap
和add()
方法添加数据(例如字符串),并使用get()
方法将其取回,但我对对象一无所知
任何帮助都将不胜感激。谢谢 编辑:我研究了android开发者文档,找到了添加带有嵌套字段的对象的解决方案。但现在我正挣扎着如何找回它们。我尝试了以下代码:
DocumentReference docRef =
db.collection("Users").document("myDocument");
docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>({
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
DocumentSnapshot document = task.getResult();
if (document != null) {
Object object = task.getResult().getData().get("myObject");
String str = object.toString();
tv.setText(str);
} else {
Log.d(TAG, "No such document");
}
} else {
Log.d(TAG, "get failed with ", task.getException());
}
}
});
如有任何意见/帮助,将不胜感激!
“document.getData()
返回“几乎”的JSON数据。这可以通过使用Gson和JsonElement来解释。例如:如果objectName指的是对象的名称,Classname指的是所需对象的类的名称
Gson gson = new Gson();
JsonElement jsonElement = gson.toJsonTree(document.getData());
Classname objectName = gson.fromJson(jsonElement, Classname.class);
代码可以这样缩短:
Gson gson = new Gson();
Classname objectName = gson.fromJson(gson.toJsonTree(document.getData()), Classname.class);
如果你想要一个HashMap,你可以这样投射它
HashMap<String, FieldValueClass> map = (HashMap<String, FieldValueClass>)(document.getData()).
HashMap=(HashMap)(document.getData())。
但是,只有当所有字段都可以转换为FieldValueClass
时,这才有效
HashMap<String, FieldValueClass> map = (HashMap<String, FieldValueClass>)(document.getData()).