如何在安卓中创建RealmList<RealmList<Object>>?

5
我试图从服务器(JSON)获取一个RealmList的RealmList到realm对象中。我收到以下错误消息:
"error: RealmList的元素类型必须是实现'RealmModel'接口的类之一,或者是以下类型之一:'java.lang.String'、'byte[]'、'java.lang.Boolean'、'java.lang.Long'、'java.lang.Integer'、'java.lang.Short'、'java.lang.Byte'、'java.lang.Double'、'java.lang.Float'或者是 'java.util.Date'。"
{
 "facilities": [
{
  "facility_id": "1",
  "name": "Property Type",
  "options": [
    {
      "name": "Apartment",
      "icon": "apartment",
      "id": "1"
    },
    {
      "name": "Condo",
      "icon": "condo",
      "id": "2"
    },
    {
      "name": "Boat House",
      "icon": "boat",
      "id": "3"
    },
    {
      "name": "Land",
      "icon": "land",
      "id": "4"
    }
  ]
},
{
  "facility_id": "2",
  "name": "Number of Rooms",
  "options": [
    {
      "name": "1 to 3 Rooms",
      "icon": "rooms",
      "id": "6"
    },
    {
      "name": "No Rooms",
      "icon": "no-room",
      "id": "7"
    }
  ]
},
{
  "facility_id": "3",
  "name": "Other facilities",
  "options": [
    {
      "name": "Swimming Pool",
      "icon": "swimming",
      "id": "10"
    },
    {
      "name": "Garden Area",
      "icon": "garden",
      "id": "11"
    },
    {
      "name": "Garage",
      "icon": "garage",
      "id": "12"
    }
  ]
}
],
 "exclusions": [
[
  {
    "facility_id": "1",
    "options_id": "4"
  },
  {
    "facility_id": "2",
    "options_id": "6"
  }
],
[
  {
    "facility_id": "1",
    "options_id": "3"
  },
  {
    "facility_id": "3",
    "options_id": "12"
  }
],
[
  {
    "facility_id": "2",
    "options_id": "7"
  },
  {
    "facility_id": "3",
    "options_id": "12"
  }
]
]
}

你能提供导致这个错误的代码部分吗? - GianhTran
私有的 RealmList<Facility> facilities; - 我能够解析这个, 私有的 RealmList < RealmList <Exclusion>> exclusions; - 这会导致错误。 - user3455150
RealmList < RealmList <Exclusion>> 是不正确的,那么为什么你需要使用它呢?告诉我你的目的,我可以帮助你。 - GianhTran
我已经编辑了我的问题并添加了JSON字符串。我需要解析这样的数据,因此需要使用RealmList <RealmList <Exclusion>>。 - user3455150
我明白了,下面试试我的答案。 - GianhTran
2个回答

0

尝试这个解决方案

public class Exclusion extends RealmObject {
    private int facilityId;
    private int optionsId;
}

public class Exclusions extends RealmObject {
private RealmList<Exclusion> exclusions;
}

现在你可以使用 RealmList<Exclusions> exclusionsRealmList 作为 Realm 列表,是合法的。

希望这能帮到你。


这将适用于一个排除数组。JSON 可以有 n 个排除数组,需要 RealmList <RealmList <Exclusion>>。 - user3455150
我有一个包含 Exclusion 的 Exclusions 类型的 RealmList,这意味着 RealmList<Exclusions> 等同于 RealmList < RealmList <Exclusion>>。 - GianhTran
是的,我明白。无论您将“Exclusions”称为什么,它也可以是n个数字。 - user3455150
我不明白你为什么说“这只适用于一个排除数组”? - GianhTran
我已经复制了整个JSON。请帮我找到一种解析它并将其存储在Realm中的方法。 - user3455150
你可以随时使用http://www.jsonschema2pojo.org将你的对象转换为可解析的格式。 - EpicPandaForce

0
Gianthran的回答很接近,但你还应该建立关系。
 public class Exclusion extends RealmObject {
     @Index
     private int facilityId;
     @Index
     private int optionsId;

     private Facility facility;

     private Option option;
 }

而且

 public class Facility extends RealmObject {
      @LinkingObjects("facility")
      private final RealmResults<Exclusion> exclusions = null;
 }

 public class Option extends RealmObject {
      @LinkingObjects("option")
      private final RealmResults<Exclusion> exclusions = null;
 }

我不认为排除对象是必要的,我希望表格已经以某种方式成为了一个集合。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接