Я имею json
с полем _id
Использование Realm с Gson
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
не может анализироваться и в базе данных создается запись с идентификатором = 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
из базы данных, поскольку значение по умолчанию для строки равно нулем.
Итак, возможно, я неправильно использовал атрибут. Как рассмотреть атрибут при работе с методами сохранения json (createOrUpdateObjectFromJson
и т. Д.)?
спасибо, христианин. Приоритет IMHO должен быть изменен на нормальный :) – Alexandr