我是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"
}
]
}
]
}
答案 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内部)转换为结构化对象(POJO类)。像这样:
@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)