这是我在Firebase数据库中的JSON数据结构:
familylist
|- 0
|--children
| |-- 0:"AAA"
| |-- 1:"BBB"
|-- code: "2222"
|-- family: "SWE"
|-- fatherName: "ABC"
|-- motherName: "XYZ"
|- 1
|--children
| |-- 0:"XXX"
| |-- 1:"YYY"
|-- code: "3333"
|-- family: "ABC"
|-- fatherName: "ERT"
|-- motherName: "XTS"
我能够从JSON树中提取除children
之外的所有字段。任何人都可以建议我如何从children
检索数据吗?
这是我从firebase数据库中检索除子项之外的所有字段的代码。为了检索children
值,可以对此代码执行哪些操作?我无法搞清楚。
familyListReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot ds: dataSnapshot.getChildren()) {
String key = (String) ds.getKey();
Log.d(TAG, "Key" + key);
DatabaseReference keyReference = FirebaseDatabase.getInstance().getReference().child("familylist").child(key);
Log.d(TAG, "Key reference: " + keyReference);
keyReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String code = dataSnapshot.child("code").getValue(String.class);
String family = dataSnapshot.child("family").getValue(String.class);
String father = dataSnapshot.child("fatherName").getValue(String.class);
String mother = dataSnapshot.child("motherName").getValue(String.class);
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.d(TAG, "Read failed");
}
}); // [End of keyReference]
} // END of for Loop
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.d(TAG, "Read failed");
}
}); // [End of familyListDatabaseReference]
答案 0 :(得分:4)
由于public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot childSnapshot: dataSnapshot.child("children").getChildren()) {
System.out.println(childSnapshot.getValue(String.class));
}
}
是一个列表,您可能正在寻找:
npm run watch
请注意,Firebase文档建议不要在此类列表中使用数组,例如在this blog post中。相反,它建议using push()
to populate lists。
答案 1 :(得分:2)
在声明这4个字符串之后,在onDataChange()
方法中添加以下代码行:
String code = dataSnapshot.child("code").getValue(String.class);
String family = dataSnapshot.child("family").getValue(String.class);
String father = dataSnapshot.child("fatherName").getValue(String.class);
String mother = dataSnapshot.child("motherName").getValue(String.class);
for (DataSnapshot ds : dataSnapshot.child("children").getChildren()) {
Log.d("TAG", ds.getValue(String.class));
}
希望它有所帮助。
答案 2 :(得分:1)
如果你实际上不知道你有多少孩子,我认为我的解决方案比其他用户之前建议的更好。
List<String> children = dataSnapshot.child("children").getValue(new GenericTypeIndicator<List<String>>(){});