2017-05-25 100 views
0

我正在使用firebase4j(一個用於Java的firebase庫,我知道和節點一起使用要好得多,我只是想試着用Java來做)。在我的數據庫中,我需要使用一堆圖片信息來保存圖片的網址。問題是,圖片的URL本身是非常深成JSON迭代對象的JSON對象Firebase

"users" : { 
"aCategory" : { 
    "aUser" : { 
    "photos" : { 
     "photoUid1" : [ { 
     "value1" : false, 
     "value2" : "qwerty", 
     "score" : 40, 
     "url" : "http://someurl.com" 
     } 

這就是爲什麼我想創建爲按分數排序的照片索引,包含指向照片對象的位置的URL firebase數據庫。這是問題開始的地方。 Firebase4j不會讓你推,以例如列表,因此該指數與此格式結束:當問

{ 
     "-UID1": { 
     "firebaseImgUrl": "users/aCategory/aUser/photos/photoUid1", 
     "score": 31 
     }, 
     "-UID2": { 
     "firebaseImgUrl": "users/aCategory/aUser/photos/photoUid2", 
     "score": 30 
     } 
    } 

我已經添加規則「.indexOn」爲了火力與正確的照片來回答爲http://firebaseurl.com/users/...?orderBy="score"&limitToFirst=10,這正是我正在做的。我想知道如何迭代對象的JSON對象,如上例所示。我正在接收來自Angular 4客戶端的數據。我已經嘗試了一些方法,但沒有爲我工作:

result: Photo[] = []; 
for(let key in json){ 
    console.log(key); //prints the UIDs 
    console.log(key.url); //url is not a property of string 
    //thus 
    result.push(new Photo(key.url, key.score)); //not working 
} 
+0

的'key'在'讓json'鍵只,那麼,你的JSON的鍵(這是UID的字符串)。這應該工作:'result.push(新照片(json [key] .url,json [key] .score));'' – fmilani

回答

1

該鍵只是一個字符串,指示您的json中的鍵。你應該用它來訪問你的對象,像這樣:

result: Photo[] = []; 
for(let key in json){ 
    result.push(new Photo(json[key].firebaseImgUrl, json[key].score)); 
}