【发布时间】:2016-02-10 09:01:12
【问题描述】:
我有json 字段_id
String json = "{ _id : 1, name : 'Alex', role: 'admin' }"
在我的 Realm 模型中,我使用 @SerializedName 属性:
public class User extends RealmObject {
@SerializedName("_id")
@PrimaryKey
private int id;
private String name;
private String comment;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getComment() {
return comment;
}
public void setComment(String comment) {
this.comment = comment;
}
}
如果尝试保存 json:
realm.createOrUpdateObjectFromJson(User.class, json)
字段 _id 无法解析并在数据库中创建了 id = 0 的记录
在使用@SerializedName 属性的文档中
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;
}
}).create();
User user = gson.fromJson(json, User.class);
realm.beginTransaction();
realm.copyToRealmOrUpdate(user);
在这种情况下,json = "{ _id : 1, role: 'user' }" 只需从数据库中删除用户 name,因为 String 的默认值为 null。
所以,可能我错误地使用了该属性。在处理json的守恒方法(createOrUpdateObjectFromJson等)时如何考虑属性?
【问题讨论】:
标签: java android json realm realm-java