Java 以json格式检索firebase数据

Java 以json格式检索firebase数据,java,android,json,firebase,firebase-realtime-database,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-

我想检索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}
没有引号或(:)


因此,有没有一种方法可以将数据作为第一种格式的字符串获取?

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

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

当您尝试将
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);

你可以阅读更多关于它的内容。

显然,pojo类是实现我的目标最简洁、最简单的方法

第一 创建了表示我的json文件的类:

对于该json文件:

{“数据”:{ “文本”:{ “装载”:{ “介绍文字”:“嗨” } }}}

创建以下类:

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文件中的第一个子节点,那么is ref=“”(没有ref,因为它是第一个节点)


另一种可能的方法是使用基于URL的数据读取。如果您知道包含json文件的根。只需将.json添加到节点引用url的末尾,就可以使用http将其读取为json文件。以下面的例子为例。
权限可以是公开的,也可以是授权的,并且可以在提出请求之前进行检查

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

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

我试过了,但我认为它在嵌套节点上不起作用有点混乱,但是你也可以做
PojoClass myPojo=dataSnapshot.getValue(PojoClass.class)
,其中
PojoClass
是映射到json的java类……然后使用
gson
来转换它,我想如果它是嵌套节点的话,它是不会工作的,关于pojo类,我现在正在尝试它,我会告诉你,谢谢!如果有嵌套的节点,那么您可以调用
dataSnapshot.child(第一个\u child\u节点).child(第二个\u child\u节点).getValue()
但是,使用POJO类通常是最好的方法!我试过pojo课程,它很有效,也很简单,谢谢!伟大的我很高兴能帮上忙。太好了。无需创建不必要的Pojo类来获取json响应。此答案的Kotlin版本val
object
=dataSnapshot.getValue(Any::class.java)val json=Gson().toJson(
object
Object object = datasnapshot.getValue(Object.class);
String json = new Gson().toJson(object);