我正在使用firebase4j(一个用于Java的firebase库,我知道使用节点要好得多,我只是想尝试用Java做)。在我的数据库中,我需要用一堆图片信息来保存图像的网址。问题是图片网址本身非常深入JSON
"users" : {
"aCategory" : {
"aUser" : {
"photos" : {
"photoUid1" : [ {
"value1" : false,
"value2" : "qwerty",
"score" : 40,
"url" : "http://someurl.com"
}
这就是我尝试为得分排序的图片创建索引的原因,其中包含指向firebase数据库中照片对象位置的url。这是问题的开始。例如,Firebase4j不允许你推送到列表,因此索引以这种格式结束:
{
"-UID1": {
"firebaseImgUrl": "users/aCategory/aUser/photos/photoUid1",
"score": 31
},
"-UID2": {
"firebaseImgUrl": "users/aCategory/aUser/photos/photoUid2",
"score": 30
}
}
我已经添加了规则" .indexOn"为了让firebase在被要求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 :(得分:1)
键只是一个字符串,表示json中的键。您应该使用它来访问您的对象,如下所示:
result: Photo[] = [];
for(let key in json){
result.push(new Photo(json[key].firebaseImgUrl, json[key].score));
}