Я использую модификацию с помощью gson для десериализации моего json в объекты сферы. Это работает очень хорошо по большей части. Проблемы возникают при работе с
RealmList (String (или любой другой базовый тип данных))
Так как Realm не поддерживает RealmList, где E не расширяет объект Realm, я завернул String в объект RealmObject.
public class RealmString extends RealmObject {
private String val;
public String getValue() {
return val;
}
public void setValue(String value) {
this.val = value;
}
}
Объект моего объекта ниже
public class RealmPerson extends RealmObject {
@PrimaryKey
private String userId;
...
private RealmList<RealmString> stringStuff;
private RealmList<SimpleRealmObj> otherStuff;
<setters and getters>
}
SimpleRealmObj отлично работает, поскольку он содержит только элементы String
public class SimpleRealmObj extends RealmObject {
private String foo;
private String bar;
...
}
Как я могу десериализовать stringStuff? Я попытался использовать gson TypeAdapter
public class RealmPersonAdapter extends TypeAdapter<RealmPerson> {
@Override
public void write(JsonWriter out, RealmPerson value) throws IOException {
out.beginObject();
Log.e("DBG " + value.getLastName(), "");
out.endObject();
}
@Override
public RealmPerson read(JsonReader in) throws IOException {
QLRealmPerson rList = new RealmPerson();
in.beginObject();
while (in.hasNext()) {
Log.e("DBG " + in.nextString(), "");
}
in.endObject();
return rList;
}
Однако я все еще попадал в IllegalStateException
2334-2334/com.qualcomm.qlearn.app E//PersonService.java: 71: main com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: ожидается строка, но была ИМЯ в строке 1 столбец 3 пути $.
Я попробовал RealmList, адаптер RealmString раньше безрезультатно. Единственное обходное решение, которое мне удалось найти, - https://github.com/realm/realm-java/issues/620#issuecomment-66640786 Любые лучшие варианты?