以json的形式检索firebase数据

时间:2017-07-02 18:08:19

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

我想检索存储在firebase数据库中的数据,但是使用正确的Json格式,问题是当使用String.valueOf(dataSnapshot.getValue())时,它不是正确的json格式。 例如,如果数据

{
  "properties" : {
     "last_update" : "15-02-2017 02:48:00 pm",
     "last_update_code" : "1258884"  
  } 
}

返回的值就像那样

properties = {last_update = 15-02-2017 02:48:00 pm,last_update_code = 1258884}

没有引号或(:)。

所以有没有办法以第一种格式将数据作为字符串?

5 个答案:

答案 0 :(得分:5)

当您尝试将json转换为String时,您将获得返回的值。

因此,您可以使用以下方法之一,而不是这样做: -

首先: -

String lastUpdate = dataSnapshot.child(last_update).getValue(String.class);
String last_update_code = dataSnapshot.child(last_update_code).getValue(String.class);

第二: -

定义映射到Json的POJO。之后,请使用以下代码。

YourPOJO yourPOJO = dataSnapshot.getValue(YourPOJO.class);

您可以详细了解here

答案 1 :(得分:3)

一种方法是使用Gson将结果转换为json字符串,例如

String jsonString = gson.toJson(dataSnapshot.getValue());

答案 2 :(得分:2)

这是我的工作。 首先,从DataSnapshot创建一个java对象,然后使用Gson从该对象获取JSON。

Object object = datasnapshot.getValue(Object.class);
String json = new Gson().toJson(object);

答案 3 :(得分:1)

很明显,pojo课程是实现目标的最简洁,最简单的方法

第一

创建了代表我的json文件的类:

表示该json文件:

  

{“data”:{       “text”:{         “loading”:{           “intro_text”:“嗨”             }         }}

创建这些类:

pojo,数据,文本,加载如下:

public class Pojo{
    private Data data;

    public void setData(Data data){
        this.data = data;
    }
    public Data getData(){
        return this.data;
    }

public class Data {
    private Text text;

    public void setText(Text text){
        this.text = text;
    }
    public Text getText(){
        return this.text;
    }
}

public class Text {
    private Loading loading;

    public void setLoading(Loading loading){
        this.loading = loading;
    }
    public Loading getLoading(){
        return this.loading;
    }
}

public class Loading {
    private String intro_text;

    public void setIntro_text(String intro_text){
        this.intro_text = intro_text;
    }
    public String getIntro_text(){
        return this.intro_text;
}

}

第二

在此部分文件中应用此方法 假设(data)是json文件中的第一个子节点,那么是ref =“”(没有引用,因为它是第一个节点)

 Database database = FirebaseDatabase.getInstance();
 DatabaseReference databaseReference = database.getReference("");
 databaseReference.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        Pojo pojo = dataSnapshot.getValue(Pojo.class);
        Gson gson = new Gson();
        String reqJson= gson.toJson(pojo);
        return reqJson
    }

答案 4 :(得分:0)

另一种可能的方法是使用基于URL的数据读取。如果你知道包含json文件的根。只需将.json添加到节点的引用URL的末尾,就可以使用http将其读取为json文件。请考虑以下示例。 https://database-name.firebaseio.com/profiles/key.json 许可可以是公开的或授权的,可以在提出请求之前进行检查。

相关问题