所以我开始玩Realm,到目前为止,我对我的简单用例已经非常不言自明了,但我发现从Json创建一个带有realmList的领域对象并没有填充领域列表。这就是我所拥有的:
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
}
这两个类在我的实际代码中都有适当的getter和setter我只是包含了一个信息样本和所有重要信息来缩短它。
我正在使用改造,所有数据都以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时,知道为什么我没有看到任何内容吗?我已经尝试在领域对象中嵌入领域对象,看起来很好,只有realmList似乎给我一个问题。在调用createObject时,我不确定数据是否首先被保存到域中。我也试过createAllFromJson,但我得到了一个
Could not create JSON array from string
例外 编辑:示例json { “地点”:[{ “place_id”:1280, “PLACE_NAME”: “加拿大”}}]}
答案 0 :(得分:0)
我建议你用Gson来处理JSON。我已经成功地使用了Gson,Retrofit和Realm。
使用排除策略构建gson
negative value
将Gson添加到RestAdapter构建器
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;
}
})