我如何通过推送随机键获取我的信息

时间:2018-01-21 08:34:54

标签: java android json firebase firebase-realtime-database

我通过接收DataSnapShot获得JsonString:

myRef.child("user").orderByChild("u_email").equalTo(name).addListenerForSingleValueEvent(new ValueEventListener() {
                        @Override
                        public void onDataChange(DataSnapshot dataSnapshot) {
                            String c = dataSnapshot.getValue().toString();
                            Log.w(Login.TAG, "Data: "+ c);
                        }
                        @Override
                        public void onCancelled(DatabaseError databaseError) {
                        }
                    });

正常,如果我知道密钥(-L3Mh7kKl04GSrndbrVD)病码:

JSONObject a = new JSONObject(c);
JSONObject jsonUser = a.getJSONObject("-L3Mh7kKl04GSrndbrVD");

但是我没有那把钥匙,我怎么能用代码得到那个价值(名字,通行证,img,...),新手。非常感谢

enter image description here

2 个答案:

答案 0 :(得分:0)

试试这个

    myRef.child("user").orderByChild("u_email").equalTo(name).addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                        String c = dataSnapshot.getValue().toString();
                        Log.w(Login.TAG, "Data: "+ c);
                        for(DataSnapshot ds : dataSnapshot.getChildren()) {
                         String u_img = ds.child("u_img").getValue(String.class);
                         String u_pass = ds.child("u_pass").getValue(String.class);
                         String u_address = ds.child("u_address").getValue(String.class);
        Log.d("TAG",u_img + " / " + u_pass + " / " + u_address);
        }
                    }
                    @Override
                    public void onCancelled(DatabaseError databaseError) {
                    }
                });

答案 1 :(得分:0)

试试这个:

  DatabaseReference references=FirebaseDatabase.getInstance().getReference().child("user");
references.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot data: dataSnapshot.getChildren()){
           String name=data.child("name").getValue().toString();
           String password=data.child("pass").getValue().toString();
           String img=data.child("img").getValue().toString();

        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

    }
});

这里引用是用户节点,然后使用for循环,它将在每个push id内迭代,为你提供值(name,img,pass,...)。