如何在保存复杂对象时避免创建新模型

时间:2015-07-24 05:52:47

标签: java android ormlite

我的移动设备从API服务器获取数据,结果集可能变得非常复杂。以下是返回结构的示例:

{
    "Home" : {
        "Person" : [
            {
                "name" : "Joe",
                "age" : 16,
                "gender" : "Male",
                "occupation" : null
            }, {
                "name" : "Jane",
                "age" : 23,
                "gender" : "Female",
                "occupation" : {
                    "position" : "Barista",
                    "years" : 4,
                    "type" : "Temporary"
                }                                
            }, {
                "name" : "Samantha",
                "age" : 7,
                "gender" : "Female",
                "occupation" : null
            }
        ]
    }
}

这只是一个对象。在这种情况下,我创建了2个模型:

Home& Person ...但Person中有另一个名为Occupation的对象,但我拒绝为此创建模型。

我持久保存此数据的当前方式是我首先保留Person对象,因为我将其定义为Home的外部实体,然后当我保存Home对象时,我将使用Person的引用来保留我的Home对象。

有没有办法避免这样做?我可以只使用一个名为Person的模型,而能够持久保存所有内部对象吗?

为可能只有一个或两个属性的小对象创建另一个模型是不是一个坏主意?

1 个答案:

答案 0 :(得分:0)

  

Home&人......但在Person中有另一个名为Occupation的对象,但我拒绝为此创建一个模型。

你为什么拒绝?这样做几乎没有任何惩罚和封装的许多好处。您的JSON将occupation视为给定{ ... }的类,因此您应该使用Java。

例如,如果您尝试将occupation中的字段嵌入Person,那么null占用字段将如何表示?是否将所有字段设置为null0?然后如何表示以下内容?

"occupation" : {
    "position" : null,
    "years" : 0,
    "type" : null
}                                

这是一个最好的黑客。

  

为可能只有一个或两个属性的小对象创建另一个模型是不是一个坏主意?

当然不是。这是正确的做法。我会使用某种json - > Java转换器,只需创建您的Person即可按字段匹配JSON。当您使用对象并且您的表示与您的模型完全匹配时,您将花费时间处理数据模型。