爲了學習的目的,我使用Realm和Edinburg Festival Api創建了一個Android應用程序。除了一個問題之外,它會很好。RealmObject的自定義解串器
我使用以下檢索到的JSON轉換爲RealmObjects:
public void onResponse(final String response) {
realm.executeTransactionAsync(new Realm.Transaction(){
@Override
public void execute(Realm realm) {
// Update our realm with the results
parseImages();
realm.createOrUpdateAllFromJson(Festival.class, response);
}
}
}
這工作只有一個行業例外,圖像精細。 JSON的圖像部分:
"images": {
"031da8b4bad1360eddea87e8820615016878b183": {
"hash": "031da8b4bad1360eddea87e8820615016878b183",
"orientation": "landscape",
"type": "hero",
"versions": {
"large-1024": {
"height": 213,
"mime": "image/png",
"type": "large-1024",
}
"width": 1024
}
}
這裏的問題是圖像對象中的散列。我不知道如何處理這個問題。哈希每個節日都有所不同。是否有可能在我的RealmObject中創建一個自定義的JSON解串器?
最後的代碼示例是我目前的模型:
public class Festival extends RealmObject {
@PrimaryKey
public String title;
RealmList<Image> images;
public String description_teaser;
public String description;
public String genre;
public String age_category;
public String website;
public RealmList<Performance> performances;
public int votes;
}
我知道我的PK是不是最優的,但是這還只是測試,以獲得工作的圖片,我需要設置PK遷移。
任何提示,歡迎,歡呼:)
更新
添加了圖像模型:
public class Image extends RealmObject {
public String hash;
public String orientation;
public String type;
RealmList<Version> versions;
}
更新2
我嘗試打電話realm.createOrUpdateAllFromJson前解析圖像(Festival.class,迴應);
private void parseImages(String jsonString) throws JSONException {
JSONArray jsonArr = new JSONArray(jsonString);
for(int i = 0; i < jsonArr.length(); i++){
JSONObject jsonObj = jsonArr.getJSONObject(i);
JSONObject images = (JSONObject)jsonObj.get("images");
Iterator<String> iter = images.keys();
while (iter.hasNext()) {
String key = iter.next();
try {
JSONObject value = json.get(key);
realm.createOrUpdateObjectFromJson(Image.class,value);
} catch (JSONException e) {
// Something went wrong!
}
}
}
}
更新3
我創建了清理破碎的JSON我從API獲得的功能。這不是很好,但它現在工作。它刪除了哈希和奇怪的版本,並將它們放在一個數組中。我確信它可以更有效地寫入,但我只是去這個,所以我現在可以繼續我的應用程序的其餘部分。看到我自己的答案。
好的 - ------ – EpicPandaForce