2017-02-21 6 views
0

Итак, я указал, используя Realm, и столкнулся с этим известным issue при объединении его с Gson. Я начал видеть некоторые странные сериализованные выходы, которые нарушали логику моего Rest API.Область с Gson альтернатива ExclusionStrategy и custom typeadapters

Я обнаружил, что установка ExclusionStrategy и запись пользовательских сериализаторов на каждую из моих моделей исправит его. См. Это link.

Но у меня есть более 20 моделей, которые с большей вероятностью будут изменены в будущем. Так что придерживаться этого обходного пути означает, что мне придется менять сериализаторы каждый раз, когда я меняю модели, и это, похоже, нарушает эту простоту, я думал, что буду использовать, используя Realm и Gson вместе.

Мой вопрос: есть ли другое обходное решение, чтобы обойти эти ограничения? Или это единственный выбор, который у меня есть?

+0

Обратите внимание, что ИсключениеStrategy требуется только для старых версий Realm. Если вы используете последнюю версию (2.3.1), она больше не нужна. –

ответ

0

Да. Используйте ExclusionStrategy и используйте realm.copyFromRealm(managedRealmObject);, прежде чем передавать его в GSON.

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)); 
Смежные вопросы