username
を受け取る必要があります。fullName
は「Bobby」と同じです。だから私は、次の構文を使用してFirebaseデータベースからデータを取得しようとしている: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) {
}
});
EDIT: データベースの構造は次のように探しています:事前に
{
"Scores" : {
"id1" : {
"fullName" : "Robert",
"score" : 96,
"username" : "rob"
},
"id2" : {
"fullName" : "Michael",
"score" : 87,
"username" : "mike"
},
"id3" : {
"fullName" : "Bobby",
"score" : 150,
"username" : "bob"
}
}
}
感謝を。
概要:wilkas'答えを使用して
私は希望の結果を得るために、次のコードスニペットに来た:
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) {
}
});
いくつかのエントリが'Bobby'
に等しいfullName
を持っている場合にはうまく機能。
json構造全体を投稿します –
JSONの代表的なスニペットを(スクリーンショットではなくテキストとして)投稿してください。 [Firebaseデータベースコンソール](https://console.firebase.google.com/project/_/database/data/)の[Export JSON]リンクをクリックすると、簡単にこれを取得できます。JSONをテキストとして検索可能にすることで、実際のデータを使ってテストしたり、答えに使用したりすることができます。一般的には、これは良いことです。 –