Java 在firebase firestore中获取对象内部的数据?

Java 在firebase firestore中获取对象内部的数据?,java,android,firebase,firebase-cloud-messaging,Java,Android,Firebase,Firebase Cloud Messaging,我的firebasefirestore中有以下结构 我想得到表格1和表格2的数据如何实现 下面是我试过的 registration= query.whereEqualTo("UID", sharedPref.getString("userId",null)).addSnapshotListener(new EventListener<QuerySnapshot>() { @Override public void onEvent(

我的firebase
firestore中有以下结构

我想得到表格1和表格2的数据如何实现

下面是我试过的

 registration=  query.whereEqualTo("UID", sharedPref.getString("userId",null)).addSnapshotListener(new EventListener<QuerySnapshot>() {
            @Override
            public void onEvent(QuerySnapshot documentSnapshots, FirebaseFirestoreException e) {

                if (e != null) {

                }
                for (DocumentChange documentChange : documentSnapshots.getDocumentChanges()) {


                    if (documentChange.getDocument().getData().get("mobileMenus") != null) {

                        try {
                            Log.d("order","one");
                            String notesResponse = documentChange.getDocument().getData().get("mobileMenus").toString().replace(" ", "").replace(":", "");
                            String responseNotes = notesResponse.replace("=", ":");

                            Log.d("shownotes","*****    "+responseNotes);

                            JSONObject jsonObject = new JSONObject(responseNotes);

                            isAttendance = jsonObject.getString("Attendance");
                            shared_menueditor.putString("isAttendance",isAttendance);

                            isCalender = jsonObject.getString("Calender");
                            shared_menueditor.putString("Calender",isCalender);

                            isExpenses = jsonObject.getString("Expenses");
                            shared_menueditor.putString("Expenses",isExpenses);

                            isleaves = jsonObject.getString("Leaves");
                            shared_menueditor.putString("Leaves",isleaves);

                            isLogout = jsonObject.getString("LogOut");
                            shared_menueditor.putString("LogOut",isLogout);

                            isNoticeboard = jsonObject.getString("NoticeBoard");
                            shared_menueditor.putString("NoticeBoard",isNoticeboard);

                            isTasks = jsonObject.getString("Tasks");
                            shared_menueditor.putString("Tasks",isTasks);

                            isTrackEmployee = jsonObject.getString("TrackEmployee");
                            shared_menueditor.putString("TrackEmployee",isTrackEmployee);

                           // documentChange.getDocument().getData().get("dynForms");
                           // Log.d("total", String.valueOf(documentChange.getDocument().getData().get("dynForms")));
                            Log.d("order","two");
                            forms= (Map<String, Object>) documentChange.getDocument().getData().get("mobileMenus");

                            Log.d("showfomsizes","***   "+forms.size());



                        } catch (JSONException e1) {
                            e1.printStackTrace();
                        }
                    }


                    if (forms!= null) {
                        for (Map.Entry<String, Object> form : forms.entrySet()) {
                            String key = form.getKey();
                            Map<Object, Object> values = (Map<Object, Object>) form.getValue();
                            name = (String) values.get("name");
                            String id = (String) values.get("id");
                            Log.d("nesteddata", name + "......" + id + "......." + key);
                            if (key.contains("Form1")) {
                                shared_menueditor.putString("nav_form1",name);
                            }
                            if (key.contains("Form2")) {
                                shared_menueditor.putString("nav_form2",name);
                            }
                            if (key.contains("Form3")) {
                                shared_menueditor.putString("nav_form3",name);
                            }
                        }
                        shared_menueditor.apply();
                        shared_menueditor.commit();

                    }
                    userprofile();

                }



            }

        });
registration=query.whereEqualTo(“UID”,sharedPref.getString(“userId”,null)).addSnapshotListener(新的EventListener()){
@凌驾
public void OneEvent(QuerySnapshot文档快照,FireBaseFireStore异常e){
如果(e!=null){
}
对于(DocumentChange DocumentChange:documentSnapshots.getDocumentChanges()){
if(documentChange.getDocument().getData().get(“mobileMenus”)!=null){
试一试{
日志d(“订单”、“一份”);
String notesResponse=documentChange.getDocument().getData().get(“mobileMenus”).toString().replace(“,”).replace(“:”,”);
字符串responseNotes=notesResponse.replace(“=”,“:”);
Log.d(“shownotes”,“*******”+响应节点);
JSONObject JSONObject=新的JSONObject(ResponseNodes);
isAttendance=jsonObject.getString(“出席”);
shared_menueditor.putString(“isAttendance”,isAttendance);
isCalender=jsonObject.getString(“日历”);
共享菜单编辑器.putString(“日历”,isCalender);
isExpenses=jsonObject.getString(“费用”);
shared_menueditor.putString(“费用”,即支出);
isleaves=jsonObject.getString(“叶子”);
shared_menueditor.putString(“Leaves”,isleaves);
isLogout=jsonObject.getString(“注销”);
shared_menueditor.putString(“LogOut”,isLogout);
isNoticeboard=jsonObject.getString(“NoticeBoard”);
shared_menueditor.putString(“NoticeBoard”,isNoticeboard);
isTasks=jsonObject.getString(“任务”);
共享的_menueditor.putString(“任务”,ISTASK);
isTrackEmployee=jsonObject.getString(“TrackEmployee”);
shared_menueditor.putString(“TrackEmployee”,isTrackEmployee);
//documentChange.getDocument().getData().get(“dynForms”);
//Log.d(“总计”,String.valueOf(documentChange.getDocument().getData().get(“dynForms”));
日志d(“订单”、“两份”);
forms=(Map)documentChange.getDocument().getData().get(“mobileMenus”);
Log.d(“showfomsizes”、“***”+forms.size());
}捕获(JSONException e1){
e1.printStackTrace();
}
}
if(forms!=null){
for(Map.Entry表单:forms.entrySet()){
String key=form.getKey();
映射值=(Map)form.getValue();
name=(String)value.get(“name”);
stringid=(String)values.get(“id”);
Log.d(“nesteddata”,name+“…”+id+“…”+key);
if(键包含(“格式1”)){
共享菜单编辑器.putString(“导航格式1”,名称);
}
if(键包含(“格式2”)){
共享菜单编辑器.putString(“导航表单2”,名称);
}
if(键包含(“格式3”)){
共享菜单编辑器.putString(“导航格式3”,名称);
}
}
共享菜单编辑器。应用();
共享菜单编辑器。提交();
}
userprofile();
}
}
});
我可以得到出勤,日历等,但我的pbm是我不能 获取表格1表格2数据


错误:java.lang.ClassCastException:java.lang.Boolean无法强制转换为java.util.Map

由于未检查所具有的布尔值,因此出现该异常。这应该是获取
表单
的代码片段。您的
forms
对象是整个
mobileMenus
对象

if (forms!= null) {
   for (Map.Entry<String, Object> form : forms.entrySet()) {
       String key = form.getKey();
       if(key.contains("Form")) {
           Map<Object, Object> values = (Map<Object, Object>) form.getValue();
           name = (String) values.get("name");
           String id = (String) values.get("id");
           Log.d("nesteddata", name + "......" + id + "......." + key);
           if (key.contains("Form1")) {                               
               shared_menueditor.putString("nav_form1",name);
           }
           if (key.contains("Form2")) {                  
               shared_menueditor.putString("nav_form2",name);
           }
           if (key.contains("Form3")) {                             
               shared_menueditor.putString("nav_form3",name);
           }
         }
       }

   }
if(forms!=null){
for(Map.Entry表单:forms.entrySet()){
String key=form.getKey();
if(关键字包含(“表格”)){
映射值=(Map)form.getValue();
name=(String)value.get(“name”);
stringid=(String)values.get(“id”);
Log.d(“nesteddata”,name+“…”+id+“…”+key);
if(key.contains(“Form1”){
共享菜单编辑器.putString(“导航格式1”,名称);
}
if(key.contains(“Form2”){
共享菜单编辑器.putString(“导航表单2”,名称);
}
if(key.contains(“Form3”){
共享菜单编辑器.putString(“导航格式3”,名称);
}
}
}
}