Firebase:检索实现Map< K,V>的类的值 [英] Firebase: retrieve value of class that implements Map<K, V>

查看:187
本文介绍了Firebase:检索实现Map< K,V>的类的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设我有数据类:

$ $ p $ class MyDataClass {
...
public Map<字符串,对象> properties = HashMap()
}

//稍后
MyDataClass data = snapshot.getValue(MyDataClass.class);

运行此代码后,data.properties包含所有存在于属性键在给定的快照。

出于某种原因,我想改变类型的属性字段到我的自定义Map实现:

  class MyMap实现Map< String,Object> {...} 
$ b $ class MyDataClass {
...
public MyMap properties = MyMap()
}

// later
MyDataClass data = snapshot.getValue(MyDataClass.class);

运行此代码后,data.properties中没有数据。
$ b $我不知道是否有可能检索数据到自定义地图实现?



UPD:JSON我试图阅读

  {
items:{
id:{
name:name,
properties :{
simpleProp1:value1,
simpleProp2:value2,
simpleProp3:value3,
complexProp1:{
subPop1:subVal1
...
}
}
}
}
}

不要以为Firebase将能够直接使用您的自定义 Map 实现。因此,您可以考虑添加一个简单的数据类:

  class MyDataJSON {
public MyDataJSON(){}
公共字符串名称;
public Map< String,Object>性能;
}

class MyDataClass {
MyDataClass(MyDataJSON json){...}
...
}
MyDataClass
对象:$ b $


$ b

b

  MyDataJSON json = snapshot.getValue(MyDataJSON.class); 
MyDataClass data = MyDataClass(json);

我知道,远非完美,但至少您可以完全控制数据库 unmarshalling 进程(和相应的属性类型)。

Assume I have data class:

class MyDataClass {
    ...
    public Map<String, Object> properties = HashMap()
}

// later
MyDataClass data = snapshot.getValue(MyDataClass.class);

After running this code data.properties contains all the data that exists under the properties key in the given snapshot.

For some reason I want to change type of properties field to my custom Map implementation:

class MyMap implements Map<String, Object> { ... }

class MyDataClass {
    ...
    public MyMap properties = MyMap()
}

// later
MyDataClass data = snapshot.getValue(MyDataClass.class);

After running this code data.properties no data.

I wonder if it is even possible to retrieve data to custom map implementation?

UPD: JSON i try to read

{
  items: {
    "id": {
      "name": "name",
      "properties": {
        "simpleProp1": "value1",
        "simpleProp2": "value2",
        "simpleProp3": "value3",
        "complexProp1": {
          "subPop1": "subVal1"
          ...
        }
      }
    }
  }
}

Thanks!

解决方案

I don't think Firebase will be able to work with your custom Map implementation directly. As such, you might consider adding a simple data class instead:

class MyDataJSON {
    public MyDataJSON() { }
    public String name;
    public Map<String, Object> properties;
}

class MyDataClass {
    MyDataClass(MyDataJSON json) { ... }
    ...
}

then use it to construct your MyDataClass object:

MyDataJSON json = snapshot.getValue(MyDataJSON.class);
MyDataClass data = MyDataClass(json);

I know, far from perfect, but at least you gain complete control over the database unmarshalling process (and corresponding properties types).

这篇关于Firebase:检索实现Map&lt; K,V&gt;的类的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆