2017-05-25 2 views
0

Ich benutze Firebase4j (eine Firebase-Bibliothek für Java, ich weiß, es ist viel besser, mit Knoten zu gehen, ich wollte nur versuchen, es mit Java zu tun). In meiner Datenbank muss ich die URL von Bildern mit einer Menge der Bildinformationen beibehalten. Die Sache ist, dass das Bild url sich sehr tief in die JSON istIterieren eines JSON Objekt von Objekten Firebase

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

Deshalb versuche ich, einen Index für die Bilder nach Punkten, enthält die URL an den Ort des Fotos Objekt zeigt bestellt zu schaffen, in die Firebase-Datenbank. Hier beginnt das Problem. Firebase4j läßt Dich nicht drücken, um eine Liste zum Beispiel, so dass der Index endet mit diesem Format auf:

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

Ich habe bereits die Regel „.indexOn“, um für Feuerbasis mit den richtigen Fotos zu beantworten, wenn Sie gefragt für http://firebaseurl.com/users/...?orderBy="score"&limitToFirst=10, was ich mache. Ich würde gerne wissen, wie ich ein JSON-Objekt des Objekts iterieren sollte, wie im obigen Beispiel gezeigt. Ich erhalte die Daten von einem Angular 4-Client. Ich habe eine Anzahl von Methoden ausprobiert, die für mich nicht funktioniert haben:

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

die 'key' in' lassen Schlüssel in json' ist nur, na ja, die Tasten Ihres json (die die UIDs Saiten). Dies sollte funktionieren: 'result.push (neues Foto (json [key] .url, json [key] .score));' – fmilani

Antwort

1

Der Schlüssel ist nur eine Zeichenkette, die die Schlüssel in Ihrem json anzeigt. Sie sollten es benutzen, um Ihre Objekt zuzugreifen, wie folgt aus:

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