【问题标题】:Failed to handle RealmList<RealmList<RealmInt>> in Realm.io在 Realm.io 中处理 RealmList<RealmList<RealmInt>> 失败
【发布时间】:2016-05-02 12:58:09
【问题描述】:

我的 JSON 数据从服务器 api 看起来像这样

{
  //...
  PredecessorIds:[[1,2][3,4][5]]
  //...
}

我可以通过 RealmList&lt;RealmInt&gt; 成功处理 Integer 或 String 的数组,但这次我失败并出现错误,因为 RealmList> 不支持说 "Type parameter 'io.realm.realmList' is not within its bounds...."

对于RealmInt,请参阅this link

我尝试使用 RealmList&lt;RealmLista&gt; 解决它,其中 RealmLista 从 RealmObject 扩展并有一个 RealmList 像这样

public class RealmLista extends RealmObject {
public RealmList<RealmInt> value;
public RealmLista() {
}

public RealmLista(RealmList<RealmInt> val) {
  this.value = val;
}

}

然后创建了一个RealmListaTypeAdapter并将其添加到Gson,但是在反序列化Gson expects an Object (RealmLista) but is found array时,从服务器上显示的数据很明显。

//RealmListAdapter for Gson
@Override
public RealmLista read(JsonReader in) throws IOException {
    RealmLista lista = new RealmLista();
    Gson gson = new Gson();
    //how to read that [[1],[3,4]] int into RealmLista
    in.beginArray();
    while (in.hasNext()) {
        lista.value.add(new RealmInt(in.nextInt()));
    }
    in.endArray();
    return lista;
}

有什么方法可以在保存的同时转换成任意类型的RealmObject来存储一个简单的List&lt;List&lt;Integer&gt;&gt;List&lt;List&lt;Integer&gt;&gt;很容易被Gson转换。 :-/

【问题讨论】:

  • [如果您想存储它们的数组,这仅适用于领域整数的 RealmList&lt;RealmInteger&gt;](https://gist.github.com/cmelchior/1a97377df0c49cd4fca9) but you do need a new object that stores a RealmList`。

标签: android database realm realm-list


【解决方案1】:

Realm 目前不支持列表列表。见https://github.com/realm/realm-java/issues/2549

所以@EpicPandaForce 关于创建一个包含该内部列表的 RealmObject 的想法可能是最好的解决方法。

它可能看起来像这样:

public class Top extends RealmObject {
  private RealmList<ChildList> list;
}

public class ChildList extends RealmObject {
  private RealmList<RealmInt> list;
}

public class RealmInt extends RealmObject {
  private int i;
}

要点的正确链接应该是:https://gist.github.com/cmelchior/1a97377df0c49cd4fca9

【讨论】:

  • 我已经在做。问题在于 Gson。它不接受我正在接收直接数组的对象(具有数组)。
  • 听起来您应该创建一个自定义 GSON 反序列化器。要点中有一个例子。
  • 你能在问题中看到我的适配器吗,我在找到数组时读取对象时遇到问题,或者我需要添加另一个问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多