假设我有数据类:
class MyDataClass {
...
public Map<String, Object> properties = HashMap()
}
// later
MyDataClass data = snapshot.getValue(MyDataClass.class);
运行此代码后,data.properties 包含给定快照中 properties
键下存在的所有数据。
出于某种原因,我想将 properties
字段的类型更改为我的自定义 Map 实现:
class MyMap implements Map<String, Object> { ... }
class MyDataClass {
...
public MyMap properties = MyMap()
}
// later
MyDataClass data = snapshot.getValue(MyDataClass.class);
运行此代码后 data.properties 没有数据。
我想知道是否有可能检索数据以实现自定义 map ?
UPD:我尝试阅读 JSON
{
items: {
"id": {
"name": "name",
"properties": {
"simpleProp1": "value1",
"simpleProp2": "value2",
"simpleProp3": "value3",
"complexProp1": {
"subPop1": "subVal1"
...
}
}
}
}
}
谢谢!
最佳答案
我认为 Firebase 无法直接使用您的自定义 Map
实现。因此,您可能会考虑添加一个简单的数据类:
class MyDataJSON {
public MyDataJSON() { }
public String name;
public Map<String, Object> properties;
}
class MyDataClass {
MyDataClass(MyDataJSON json) { ... }
...
}
然后用它来构造你的 MyDataClass
对象:
MyDataJSON json = snapshot.getValue(MyDataJSON.class);
MyDataClass data = MyDataClass(json);
我知道,这远非完美,但至少您可以完全控制数据库解码 过程(以及相应的属性类型)。
关于java - Firebase:检索实现 Map<K, V> 的类的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44696543/