我正在使用gson进行改造,将我的json反序列化为领域对象.这在大多数情况下都非常有效.处理时遇到麻烦
RealmList(String(或任何其他基本数据类型))
由于Realm不支持RealmList,其中E不扩展Realm对象,我将String包装在RealmObject中.
public class RealmString extends RealmObject {
private String val;
public String getValue() {
return val;
}
public void setValue(String value) {
this.val = value;
}
}
Run Code Online (Sandbox Code Playgroud)
我的领域对象如下
public class RealmPerson extends RealmObject {
@PrimaryKey
private String userId;
...
private RealmList<RealmString> stringStuff;
private RealmList<SimpleRealmObj> otherStuff;
<setters and getters>
}
Run Code Online (Sandbox Code Playgroud)
SimpleRealmObj工作正常,因为它只有String元素
public class SimpleRealmObj extends RealmObject {
private String foo;
private String bar;
...
}
Run Code Online (Sandbox Code Playgroud)
如何反序列化stringStuff?我尝试使用gson TypeAdapter
public class RealmPersonAdapter extends TypeAdapter<RealmPerson> {
@Override
public void write(JsonWriter out, RealmPerson …Run Code Online (Sandbox Code Playgroud) 我正在与Realm合作,用Realm创建我的Android应用程序的ORM.问题是,当我尝试创建这样的对象时:
public class Airport extends RealmObject {
private int Id;
private String Name;
private String Code;
private RealmList<Integer> destinations;
}
Run Code Online (Sandbox Code Playgroud)
androidStudio告诉我,我不能拥有类型为Integer的RealmList; 并且对于String类型也是.我一直在寻找一些类似的问题,但最好的方法是声明一个像这样的对象:
public class MyRealmInteger extends RealmObject {
private int destination;
}
Run Code Online (Sandbox Code Playgroud)
所以这样我可以按如下方式重写我的课程:
public class Airport extends RealmObject {
private int Id;
private String Name;
private String Code;
private RealmList<MyRealmInteger> destinations;
}
Run Code Online (Sandbox Code Playgroud)
但我觉得这很复杂.没有其他更简单的解决方案?