我遇到Firebase android实现的问题。 我有一个HashMap类。 在Firebase中存储课程时,一切都很好。 但是当HashMap的键是数字而不是firebase有时会错误存储列表的hashmap并抛出此异常:
com.google.firebase.database.DatabaseException:在反序列化时期望一个Map,但是得到了一个类java.util.ArrayList
最简单的重现方法是使用键' 1'将单个对象放在hashmap中。
是否有解决此问题的方法(除了使用Firebase会发现吸引人的密钥)?
这是Firebase实施中的错误吗?
修改 的
这是我最简单的例子:
public void setFirebase(){
fb = FirebaseDatabase.getInstance().getReferenceFromUrl(c.getString(R.string.firebase_base_url));
fb.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
ds = dataSnapshot;
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
public void writeTestObject(){
testObject to = new testObject();
to.testMap = new HashMap<>();
to.testMap.put("1","One");
fb.child("Test").setValue(to);
}
public void readTestObject(){
testObject res = ds.child("Test").getValue(testObject.class);
}
public void run(){
setFirebase();
writeTestObject();
readTestObject();
}
import java.util.Map;
public class testObject {
public Map<String, String> testMap;
}
readTestObject() 函数会抛出上述异常。