【问题标题】:Iterate a JSON Object of Objects Firebase迭代对象 Firebase 的 JSON 对象
【发布时间】:2017-10-25 15:02:25
【问题描述】:

我正在使用 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”,以便当要求 http://firebaseurl.com/users/...?orderBy="score"&limitToFirst=10 时,firebase 可以用正确的照片来回答,这就是我正在做的事情。我想知道我应该如何迭代对象的 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
}

【问题讨论】:

  • let key in json 中的 key 只是您的 json 的键(它们是 UID 字符串)。这应该工作:result.push(new Photo(json[key].url, json[key].score));

标签: java json angular firebase firebase-realtime-database


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-26
    • 2017-05-21
    • 2011-06-05
    • 2019-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-17
    相关资源
    最近更新 更多