创建会议室数据库对象的最佳方法

时间:2018-08-29 07:32:38

标签: android android-room

我是Android的Room Persistence库的新手。我研究了很多与Room相关的教程。但是尚不清楚。

我可以将我的问题与以下答复联系起来。如果在“ Info”中使用@Embedded,是否可以将info POJO类声明为单独的实体?因为在内部信息中,我还有另一个称为“首选项”的对象。如何将其嵌入到会议室数据库中?

接下来是如何在下面的示例中将Awb ArrayList用于类型转换器?请注意,Awb ArrayList内部还有一个“ terms”数组。

如果能从以下示例数据中向我展示和解释创建会议室的最佳方法,我将不胜感激。我知道有很多关于简单JSON结构的教程,但是我没有找到任何带有嵌套JsonObjects的示例。

{
    "hashCode": 10461,
    "jobs": [
        {
            "info": {
                "jobDesc": "aaaaa",
                 "signatureRequired": "true”
                "preferences": {
                    "podRequired": 0,
                    "eligableForCcod": false,
                    "signatureRequired": 1
                }
            },
            "awb": [
                {
                    "terms": [
                        {
                            "termValue": "INR1500.000",
                            "termType": "CASH_AMOUNT"
                        },
                        {
                            "termValue": "CTLDk",
                            "termType": "CX_EN"
                        }
                    ],
                    "packagesCount": 1,
                    "accountId": "AE _MP",
                    "awb": "1234567878440"
                }
            ]
        }
    ]
}

2 个答案:

答案 0 :(得分:2)

我不知道这是否是最好的方法,但是通常当我在房间中有复杂的对象时,我会定义一个包含两个TypeConverters的转换器类。第一个将结构化对象(您的POJO类)转换为带有GSON库的String,类似于:

@TypeConverter
    public String fromPojoToString(MyPojoClass info) {
        if (info == null) {
            return (null);
        }
        Gson gson = new Gson();
        Type type = new TypeToken<MyPojoClass>() {

        }.getType();
        return gson.toJson(info, type);
    }

第二个转换器将字符串(存储在Room内部)转换为结构化对象(PO​​JO类)。像这样:

@TypeConverter
    public MyPojoClass fromStringtoPojo(String object) {
        if (object == null) {
            return (null);
        }
        Gson gson = new Gson();
        Type type = new TypeToken<MyPojoClass>() {
        }.getType();
        return gson.fromJson(info, type);
    }

这样,您无需编写很多样板文件就可以对POJO类进行序列化/反序列化。显然,您必须使用@TypeConverters批注使用Converter来批注您的AppDatabase类(扩展RoomDatabase的类)。 https://medium.com/@toddcookevt/android-room-storing-lists-of-objects-766cca57e3f9上有一篇关于这种方法的好文章。

希望有帮助,祝您好运!

答案 1 :(得分:0)