Android 添加和检索具有嵌套字段的对象(Firestore)

Android 添加和检索具有嵌套字段的对象(Firestore),android,firebase,google-cloud-firestore,Android,Firebase,Google Cloud Firestore,我对CloudFireStore很陌生,但我正在努力把它学好 有人能解释一下我如何在文档中添加一个对象(带有嵌套字段),然后检索/取回它吗 我知道如何通过Hashmap和add()方法添加数据(例如字符串),并使用get()方法将其取回,但我对对象一无所知 任何帮助都将不胜感激。 谢谢 编辑:我研究了android开发者文档,找到了添加带有嵌套字段的对象的解决方案。但现在我正挣扎着如何找回它们。我尝试了以下代码: DocumentReference docRef = db.collection

我对CloudFireStore很陌生,但我正在努力把它学好

有人能解释一下我如何在文档中添加一个对象(带有嵌套字段),然后检索/取回它吗

我知道如何通过
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()).