2016-04-01 8 views
0

Meine Frage ist, wie sollte ich deserialize und wie das Realm-Objekt "Spezialitäten" aussehen, die in Arrays hat, die jeweils eine Zeichenfolge und eine ganze Zahl enthält. Ich benutze Realm mit Gson. Ich erhalte eine JSON, das wie folgt aussieht: `Realm-Objekt und Deserialize-Array mit Arrays mit Integer und String zur Verwendung mit Realm

{ 
"status":200, 
    "message":"", 
    "data":{ 
     "specialties":[ 
     [ 
      "allergist", 
      1 
     ], 
     [ 
      "anesthesiologist", 
      1 
     ], 
     [ 
      "cardiologist", 
      1 
     ], 
     [ 
      "dermatologist", 
      0 
     ], 
     [ 
      "gastroenterologist", 
      1 
     ], 
     [ 
      "hematologist", 
      1 
     ], 
     [ 
      "nephrologist", 
      0 
     ], 
     ... 
     ] 
    } 
} 

`

+0

Mögliche Duplikate von [Google Gson - Deserialize Liste Objekt? (generischer Typ)] (http://stackoverflow.com/questions/5554217/google-gson-deserialize-listclass-object-generic-type) –

+0

Enthält 'specialities' wirklich eine Liste von Listen oder sind die inneren Listen Objekte? Wenn sie tatsächlich Listen sind, wäre der einzige unterstützte Typ für beide "Liste ", da sie sowohl einen String als auch einen Integer enthalten. –

+0

Es ist wirklich eine Liste von Liste, für mich ist es das erste Mal, dass ich verschiedene Primitive in einer Liste sehe. Ich habe einfach den JSON aus der Antwort kopiert und eingefügt – belen

Antwort

1

In diesem Fall ist dies nicht etwas, das Reich unterstützen. Realm unterstützt zur Zeit leider keine List-of-Lists (ich habe hier ein Problem erstellt: https://github.com/realm/realm-java/issues/2549). Aber selbst wenn das gelöst wäre, müssten Sie immer noch einen gemeinsamen Typ für die Listen finden. In Realms können Sie kein beliebiges Objekt speichern. In Ihrem Fall müssten Sie die Integer wahrscheinlich in Strings konvertieren.

Ein Work-Around für jetzt könnte sein, jede der Unterlisten in ein typisiertes Objekt zu konvertieren. Das erfordert, dass Sie einen benutzerdefinierten GSON-Deserializer dafür schreiben. Es gibt eine Anleitung, wie man das hier tun: https://realm.io/docs/java/latest/#primitive-lists

1

Technisch ist das Problem, dass diese

[ 
    "allergist", 
    1 
], 

Sollte völlig ein Objekt sein, so etwas wie

{ 
    "speciality": "allergist", 
    "value": 1 
} 

In diesem Fall Realm könnte dies leicht handhaben, aber da dies nicht der Fall ist, müssen Sie diese [["hello", 2], ["world", 3]] Objekte in ein typisiertes Objekt abbilden/konvertieren, das Sie als RealmObject verwenden und dann beibehalten können. Weil dies derzeit List<List<Object>> ist.

Verwandte Themen