所以,我说使用了Realm
,并在将其与Gson
结合使用时遇到了这个已知的issue。
我开始看到一些奇怪的序列化输出打破了我的Rest API的逻辑。
我发现设置ExclusionStrategy
并为每个模型编写自定义序列化程序都可以解决问题。请参阅此link。
但我有20多种型号,将来更有可能改变。因此,坚持这种解决方法意味着每次更改模型时我都必须更改序列化程序,这似乎打破了我认为通过一起使用Realm
和Gson
可以实现的这种简单性。
我的问题是:是否有其他已知的解决方法可以绕过这些限制?或者这是我唯一的选择?
答案 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));