我想检索存储在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}
没有引号或(:)。
所以有没有办法以第一种格式将数据作为字符串?
答案 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 许可可以是公开的或授权的,可以在提出请求之前进行检查。