2015-07-23 8 views
0

, поэтому я начал играть с Realm, и до сих пор он был довольно понятным для моих простых случаев использования, но я обнаружил, что создание объекта realm с помощью realmList внутри него от Json doesn Не заполняйте список областей. Вот что я получил:RealmList внутри RealmObject не заселен от json

public class User extends RealmObject{ 

    @PrimaryKey 
    private int user_id; 

    private RealmList<Place> places; 

    private String fname; 

    private String lname; 

    private String birth_date; 

    public RealmList<Place> getPlaces(){ 
     return this.places; 
    } 

    public void setPlaces(RealmList<Place>places) { 
     this.places = places; 
    } 
} 


public class Place extends RealmObject{ 

    private String place_name; 
    //several other types all ints and Strings with getters and setters 

} 

обоего этих классов имеют соответствующие методы получения и установки в моем фактическом коде я просто включал выборку информации и все важную информацию, чтобы сократить это.

Я использую модификацию, и все данные поступают как jsonelements.

userService.requestProfile(new Callback<JsonElement>() { 
     @Override 
     public void success(JsonElement profileResponse, Response response) { 
      Log.d(TAG, profileResponse.toString()); //shows raw response containing multiple places objects 
      realm.beginTransaction(); 

      User user = null; 
      try { 
       user = (User)realm.createObjectFromJson(User.class, profileResponse.toString()); 
      }catch (RealmException re){ 
       re.printStackTrace(); 
      } 
      if(user != null) { 
       Log.d(TAG, user.getFname()); //comes out correctly 
       Log.d(TAG, user.getPlaces().size()) //always says 0 
      } 
      realm.commitTransaction(); 


     } 

     @Override 
     public void failure(RetrofitError error) { 
      error.getCause(); 
     } 
    }); 

Любая идея, почему я не вижу ничего, когда я вызываю getPlaces на пользователе? Я пробовал встраивать объекты realm в объекты realm, и это кажется прекрасным, только realmList, кажется, дает мне проблему. Я не уверен, что данные даже сохраняются в области в первую очередь при вызове createObject. Я также попытался createAllFromJson, но я получаю

Could not create JSON array from string 

исключение EDIT: Пример JSON { "места": [{ "place_id": 1280, "PLACE_NAME": "Канада"}}]}

+1

Вы можете добавить свой вход JSON здесь? Кажется, это не массив, который вы хотите разыграть в Царстве. Это должно быть как '[{" name ":" xxx "}]' – beeender

+0

Вы решили свою проблему? – feisal

ответ

0

Я предлагаю вам использовать Gson для работы с JSON. Я успешно использовал Gson, Retrofit и Realm со следующей реализацией.

  1. Сложение gson со стратегией исключения

    Gson gson = 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; 
          } 
         }) 
    
  2. Добавить Gson в RestAdapter строитель

    RestAdapter.Builder() 
         //.other settings 
         .setConverter(new GsonConverter(gson)) 
         .build(); 
    
Смежные вопросы