领域与Gson替代ExclusionStrategy和自定义类型适配器

时间:2017-02-21 18:55:42

标签: android gson realm

所以,我说使用了Realm,并在将其与Gson结合使用时遇到了这个已知的issue。 我开始看到一些奇怪的序列化输出打破了我的Rest API的逻辑。

我发现设置ExclusionStrategy并为每个模型编写自定义序列化程序都可以解决问题。请参阅此link

但我有20多种型号,将来更有可能改变。因此,坚持这种解决方法意味着每次更改模型时我都必须更改序列化程序,这似乎打破了我认为通过一起使用RealmGson可以实现的这种简单性。

我的问题是:是否有其他已知的解决方法可以绕过这些限制?或者这是我唯一的选择?

1 个答案:

答案 0 :(得分:0)

是。使用ExclusionStrategy,并在将其传递给GSON之前使用realm.copyFromRealm(managedRealmObject);

    ExclusionStrategy exclusionStrategy = new ExclusionStrategy() {
        @Override
        public boolean shouldSkipField(FieldAttributes f) {
            return f.getDeclaringClass().equals(RealmObject.class);
        }

        @Override
        public boolean shouldSkipClass(Class<?> clazz) {
            return false;
        }
    };

    Gson gson = new GsonBuilder()
            .setExclusionStrategies(exclusionStrategy)
            .create();

    String json = gson.toJson(realm.copyFromRealm(myObject));