迭代对象的JSON对象Firebase

问题描述:

我正在使用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

该键只是一个字符串,指示您的json中的键。你应该用它来访问你的对象,像这样:

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