如何使用Java在Android中获取Firebase中深度嵌套节点的密钥名

如何使用Java在Android中获取Firebase中深度嵌套节点的密钥名,java,android,firebase,android-studio,Java,Android,Firebase,Android Studio,我想获取firebase中嵌套节点的键名称 这是结构图 "THIRD YEAR" : { "DAA" : { "Mod1" : { "Calender" : "A downloadable link", "Clock" : "A downloadable link" } }, "IOT" : { "M

我想获取firebase中嵌套节点的键名称

这是结构图

"THIRD YEAR" : {
"DAA" : {
  "Mod1" : {
    "Calender" : "A downloadable link",
    "Clock" : "A downloadable link"
  }
},
"IOT" : {
  "Mod1" : {
    "Topic1" : "A downloadable link",
    "Topic2" : "A downloadable link"
  }
}
}

现在,我的目标是什么?

我的目标是获得受试者的名称“DAA”和“IOT”,然后我寻找孩子“Mod1”,然后我可以通过模型类轻松访问这些值

我做了什么?

我所能做的就是通过硬编码它们的路径来访问目标值

        FirebaseDatabase.getInstance().getReference().child("THIRD YEAR").child("DAA").child("Mod1")
然后执行典型的添加侦听器的操作,以获得所需的值。 但这里的目的不是硬编码值,因为应用程序应该是动态的

目前我在这里,我期望从下面的log语句中得到的是DAA和IOT的值

   FirebaseDatabase.getInstance().getReference().child("THIRD YEAR").addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot snapshot) {
            for(DataSnapshot dataSnapshot:snapshot.getChildren()){
                Log.i("Sub name", snapshot.getValue(TestModal.class).getTopicName());

            }
我该怎么做?谢谢你抽出时间。 这是firebase中的外观


您在实施过程中面临的问题是什么?不太清楚什么是静态的,什么是变化的。如果列表中的每个项都有相同的内部类,那么这只是解析json列表的状态。(这可以归结为一个对象)我无法获取密钥的名称,我可以保证密钥的名称会随着数据库的增大而改变。我所说的键是指(DAA和Mod1,IOT和Mod1)@dinkar_kumar我无法通过编程获得这些键的名称,我该怎么做?我愿意从你那里学到的是,如果分支的根(如我在上面的代码中所示)是firebase中的一个嵌套很深的分支,我该如何获得该分支的键@Blundell。如果键采用arraylist的方式,例如0,1,2。。。。。n那么这将很容易,但当键是有意义的时问题就会出现,如上面的示例中的完整字符串是(DAA,Mod1)。总体而言,我所寻找的是获取上面树的键的代码,已知键是第三年,这将是树中其余部分的引用。然后,通过推广这个概念,我将能够从复杂甚至更嵌套的分支中获取数据和键。希望这能让我清楚地表示怀疑。:)