Java 迭代Firebase对象的JSON对象

Java 迭代Firebase对象的JSON对象,java,json,angular,firebase,firebase-realtime-database,Java,Json,Angular,Firebase,Firebase Realtime Database,我正在使用firebase4j,这是一个用于Java的firebase库,我知道使用node更好,我只是想尝试使用Java。在我的数据库中,我需要用一堆图片的信息来保存图片的url。问题是图片url本身非常深入JSON "users" : { "aCategory" : { "aUser" : { "photos" : { "photoUid1" : [ { "value1" : false, "value2" : "qwerty",

我正在使用firebase4j,这是一个用于Java的firebase库,我知道使用node更好,我只是想尝试使用Java。在我的数据库中,我需要用一堆图片的信息来保存图片的url。问题是图片url本身非常深入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
}

键只是一个字符串,表示json中的键。您应该使用它来访问对象,如下所示:

result: Photo[] = [];
for(let key in json){
  result.push(new Photo(json[key].firebaseImgUrl, json[key].score));
}
json中的let key中的key只是json的key,即UIDs字符串。这应该有效:result.pushnew Photojson[key].url,json[key].score;