Java 以json格式检索firebase数据
我想检索firebase数据库中存储的数据,但采用正确的Json格式,问题是使用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-
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版本valobject
=dataSnapshot.getValue(Any::class.java)val json=Gson().toJson(object
)
Object object = datasnapshot.getValue(Object.class);
String json = new Gson().toJson(object);