【问题标题】:How to retrieve the data from Firebase database using REST APIs in android?如何在 android 中使用 REST API 从 Firebase 数据库中检索数据?
【发布时间】:2016-07-30 06:17:32
【问题描述】:

我第一次使用火力基地时,当我尝试使用火力基地休息 api 检索数据时,我得到这样的响应,

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

它包含多个具有不同 ids 的 json 对象,没有 jsonarray。我想将这些数据存储在对象中。

【问题讨论】:

  • 您是否尝试过 Firebase 网站上提供的用于检索数据的示例代码?
  • 我不想使用 firebase lib,我只想要 firebase rest apis
  • @Rgv 你在哪里遇到问题?您是否面临解析上述 JSON 的问题?.. 您还可以判断是否要使用 Listener(如 addValueEventListener)?
  • @Amit Upadhyay,我正在使用rest apis for firebase而不是使用lib

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


【解决方案1】:

如果您仅仅因为键而在解析时遇到问题,那么您可以使用迭代器并提取键并解析它们

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
        }
    }
}

【讨论】:

  • 感谢您的重播,我会试试这个
  • ,它的工作谢谢,Vishal Patoliya 说直接rest api 不被firebase 支持。你的sloution 为我工作,这样做的正确方法是什么
  • 如果您使用的是 Firebase,那么建议根据他们的文档使用。所以最好添加他们的库并根据他们的文档进行解析。
【解决方案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) {

            }
        });

【讨论】:

  • 感谢您的重播,对不起,我不想使用 firebase lib,我只想要 firebase rest apis
  • rest api 用于 web !!如果你想在android中使用firebase,你需要在gradle依赖中添加firebase lib!
  • 你确定吗,android rest apis还有其他方法吗
  • 是的,如果你想使用firebase,你必须在android中使用firebase lib
  • 直接rest api不被firebase支持,所以firebase为我们提供了库中的默认函数,因此您可以使用firebase数据库!你不需要手动使用rest api
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-27
相关资源
最近更新 更多