【发布时间】:2016-01-31 01:43:04
【问题描述】:
我运行它以将一些数据模拟到我的 firebase 参考中:
String id = firebase.push().getKey();
FirebaseSchool school = new FirebaseSchool(id, "Test school", "Test city", "Test address");
firebase = firebase.child(id);
firebase.setValue(school);
id = firebase.child("rooms").push().getKey();
FirebaseRoomReference roomReference = new FirebaseRoomReference(id, "Test room", "Test owner");
firebase.child("rooms").child(id).setValue(roomReference);
id = firebase.child("rooms").push().getKey();
FirebaseRoomReference roomReference2 = new FirebaseRoomReference(id, "Test room 2", "Test owner 2");
firebase.child("rooms").child(id).setValue(roomReference2);
这会创建以下 json:
"schools" : {
"-K9LoPw-o0dOGAdWYqBF" : {
"address" : "Test city",
"city" : "Test address",
"id" : "-K9LoPw-o0dOGAdWYqBF",
"name" : "Test school",
"rooms" : {
"-K9LoPwDuzW-d19432kD" : {
"id" : "-K9LoPwDuzW-d19432kD",
"name" : "Test room",
"ownerName" : "Test owner"
},
"-K9LoPwFPTrwSpUs0dZS" : {
"id" : "-K9LoPwFPTrwSpUs0dZS",
"name" : "Test room 2",
"ownerName" : "Test owner 2"
}
}
}
}
按照建议,我在响应类中将 Map 更改为 List:
public class FirebaseSchool {
private String id;
private String name;
private String address;
private String city;
private List<FirebaseUserReference> admins;
private List<FirebaseRoomReference> rooms;
public List<FirebaseUserReference> getAdmins() {
return admins;
}
public void setAdmins(List<FirebaseUserReference> admins) {
this.admins = admins;
}
public List<FirebaseRoomReference> getRooms() {
return rooms;
}
public void setRooms(List<FirebaseRoomReference> rooms) {
this.rooms = rooms;
}
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 getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
}
但是当我尝试使用 snapshot.getValue(FirebaseSchool.class) 阅读学校时,我收到以下错误:
com.firebase.client.FirebaseException: Failed to bounce to type
Caused by: com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.util.ArrayList out of START_OBJECT token at [Source: java.io.StringReader@dbf0e0f; line: 1, column: 44] (through reference chain: com.usehomeroom.vasuki.data.entities.firebase.FirebaseSchool["rooms"])
【问题讨论】:
-
你能添加一段示例 JSON 作为 text 吗?最好使用比屏幕截图更多的数据。您可以通过单击导出按钮从 Firebase 仪表板轻松获取此信息。这也是一个很好的机会,可以将 JSON 剥离到最低限度以重现问题并将 getter 包含到您的代码中。见stackoverflow.com/help/mcve。
-
嘿,我已经编辑了我的答案。另外,我想知道是否有一种方法可以使用 Firebase 应用仪表板进行 push()?
标签: android firebase firebase-realtime-database