是否可以将Realm对象转换为JSON对象?

时间:2017-03-23 11:15:59

标签: android json realm

我在将Realm数据库中的对象列表发送到Web服务器时遇到问题。当没有检测到互联网连接时,应用程序应该在本地保存事务(我使用了realm数据库)。然后,当应用程序检测到Internet连接时,应该使用JSON格式将我的域数据库中的数据发送到Web服务器。 TIA。

1 个答案:

答案 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();

我认为这会对你有所帮助。祝你好运。