如何使用Android中的REST API从Firebase数据库中检索数据?

时间:2016-07-30 06:17:32

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

我第一次使用fire base时,当我尝试使用fire base rest apis检索数据时,我得到这样的响应,

{
  "-JQjT7REctmFfOAoGI6d" : {
    "age" : "23",
    "name" : "xxx",
    "id" : "1"
  },
  "-JQjT7RGTUdl1FTrjed6" : {
     "age" : "34",
    "name" : "xxx",
    "id" : "1"
  }
}

它包含多个带有不同id的json对象,而没有jsonarray.i想要将这些数据存储在对象中。

2 个答案:

答案 0 :(得分:3)

如果因为密钥而在解析方面遇到问题,那么可以使用迭代器并提取密钥并解析它们

if(jObj != null){
    Iterator<Object> keys = jObj.keys();
    while(keys.hasNext()){
        String key = String.valueOf(keys.next()); // this will be your JsonObject key
        JSONObject childObj = jObj.getJSONObject(key);
        if(childObj != null){
             //Parse the data inside your JSONObject
        }
    }
}

答案 1 :(得分:2)

you can access data by mainly 3 ways
1 addValueEventListener
2 addChildEventListener
3 addListenerForSingleValueEvent

第1步:创建模型类

public class UserModel {

    String id;
    String name;
    String age;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }
}

第2步:访问活动中的数据

 Firebase firebaseUserDataReference = new Firebase("your firebase url").child("your root name/");

firebaseUserDataReference.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                Log.d("Call", String.valueOf(dataSnapshot.getValue()));
                for (DataSnapshot postData : dataSnapshot.getChildren()) {
                    UserModel userModel= postData.getValue(UserModel.class);
                    yourArrayList.add(userModel);
                }             
            }

            @Override
            public void onCancelled(FirebaseError firebaseError) {

            }
        });