我在将Realm数据库中的对象列表发送到Web服务器时遇到问题。当没有检测到互联网连接时,应用程序应该在本地保存事务(我使用了realm数据库)。然后,当应用程序检测到Internet连接时,应该使用JSON格式将我的域数据库中的数据发送到Web服务器。 TIA。
答案 0 :(得分:1)
是的,您可以,但必须为您的班级注册TypeAdapter
,并为您的班级RealmObject
定义排除策略。
例如,您有一个User
类,如下所示:
public class User extends RealmObject {
@PrimaryKey
private String id;
private String name;
private String email;
// Getter and setter methods.
}
您必须创建用户Serializer
:
public class UserSerializer implements JsonSerializer<User> {
@Override
public JsonElement serialize(User user, Type typeOfSrc, JsonSerializationContext context) {
final JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("id", user.getId());
jsonObject.addProperty("email", user.getEmail());
jsonObject.addProperty("name", user.getName());
}
}
最后,您必须将此作为TypeAdapter
注册到您的Gson,并为Realm
添加排除策略。
new GsonBuilder()
.setExclusionStrategies(new ExclusionStrategy() {
@Override
public boolean shouldSkipField(FieldAttributes f) {
return f.getDeclaringClass().equals(RealmObject.class);
}
@Override
public boolean shouldSkipClass(Class<?> clazz) {
return false;
}
})
.registerTypeAdapter(User.class, new UserSerializer())
.create();
我认为这会对你有所帮助。祝你好运。