如何使用Java在Android中获取Firebase中深度嵌套节点的密钥名
我想获取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
"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)。总体而言,我所寻找的是获取上面树的键的代码,已知键是第三年,这将是树中其余部分的引用。然后,通过推广这个概念,我将能够从复杂甚至更嵌套的分支中获取数据和键。希望这能让我清楚地表示怀疑。:)