을 수신해야합니다. fullName
은 "Bobby"와 같습니다.Firebase DataSnapshot 값을 정확하게 파싱하는 방법
ref.orderByChild("fullName").equalTo("Bobby").addListenerForSingleValueEvent(new ValueEventListener() {...}
내가 dataSnapshot.getValue()
에서 얻을 것이 이것이다 : 그래서 나는 다음과 같은 구문을 사용하여 중포 기지 데이터베이스에서 데이터를 얻으려고
{id3={username=bob, score=150, fullName=Bobby}}
내가 최고의이나 올바른 방법이 무엇인지 알고 싶습니다
어떤 id
숫자가 반환되었는지 모르겠 으면 username
을 얻으시겠습니까?
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference ref = database.getReference("Scores");
ref.orderByChild("fullName").equalTo("Bobby").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Log.i(TAG, "dataSnapshot value = "+dataSnapshot.getValue());
if(dataSnapshot.hasChildren()){
Iterator<DataSnapshot> iter = dataSnapshot.getChildren().iterator();
DataSnapshot snap = iter.next();
if(snap.hasChildren() && snap.getValue() instanceof HashMap) {
HashMap map = (HashMap) snap.getValue();
if(map.containsKey("username")) {
Log.i(TAG, "onDataChange: username = " + map.get("username"));
}
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
편집 : 데이터베이스 구조는 다음과 같이보고한다 : 사전에
{
"Scores" : {
"id1" : {
"fullName" : "Robert",
"score" : 96,
"username" : "rob"
},
"id2" : {
"fullName" : "Michael",
"score" : 87,
"username" : "mike"
},
"id3" : {
"fullName" : "Bobby",
"score" : 150,
"username" : "bob"
}
}
}
감사합니다. 여러 항목이 fullName
동일한 'Bobby'
에있을 때 그것은 잘 작동
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference ref = database.getReference("Scores");
ref.orderByChild("fullName").equalTo("Bobby").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Log.i(TAG, "dataSnapshot value = "+dataSnapshot.getValue());
if(dataSnapshot.hasChildren()){
Iterator<DataSnapshot> iter = dataSnapshot.getChildren().iterator();
while (iter.hasNext()){
DataSnapshot snap = iter.next();
String nodId = snap.getKey();
String username = (String) snap.child("username").getValue();
//received results
Log.i(TAG, username + " on nod " + nodId);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
:
요약 : 원하는 결과를 얻기 위해 나는 다음과 같은 코드에 온 wilkas ' 대답을 사용
.
전체 json 구조 게시 –
JSON의 대표 스 니펫을 (스크린 샷이 아닌 텍스트로) 게시하십시오. [Firebase 데이터베이스 콘솔] (https://console.firebase.google.com/project/_/database/data/)에서 JSON 내보내기 링크를 클릭하면 쉽게 얻을 수 있습니다.JSON을 텍스트로 사용하면 검색이 가능해 지므로 실제 데이터로 테스트하고이를 사용하여 쉽게 답변 할 수 있습니다. 일반적으로 할 일은 단지 좋은 일입니다. –