Firebase JSON:需要访问孩子,但每个孩子都有更多孩子

时间:2016-08-27 19:26:05

标签: android firebase firebase-realtime-database

Root有一个儿童聊天。在聊天中,我们保存了不同用户的聊天记录(在这种情况下,它们是aseed,aseed2和aseed3。我需要在列表视图中显示用户名(在列表中显示aseed,aseed2和aseed3)。

这是JSON

{
 "chat" : {
    "aseed" : {
      "-KQC94Spu5JdJRbjnBh_" : {
        "author" : "JavaUser72599",
        "message" : "ggf"
      },
      "-KQC98gR9vKOyOAtKrS5" : {
        "author" : "JavaUser72599",
        "message" : "dhdh"
      }
    },
    "aseed3" : {
      "-KQCBw_ldkfhVG643eFH" : {
        "author" : "aseed3",
        "message" : "aseed"
      },
      "-KQCBxQJXq8rIqkHvA4r" : {
        "author" : "aseed3",
        "message" : "ok"
      },
      "-KQCC30HjSsHWSot9MNu" : {
        "author" : "aseed3",
        "message" : "hi"
      }
    },
    "aseed2" : {
      "-KQCC0-q6Do67PiFXXcP" : {
        "author" : "aseed2",
        "message" : "ok ok"
      }
    }
  }
}

演示项目Android Chat展示了如何阅读树叶中的最终数据。

2 个答案:

答案 0 :(得分:2)

我看到它的方式,您需要访问该特定DataSnapshot节点的密钥。你可以做的是,一旦你访问了aseed,aseed2 ..节点(可能在for循环中),你就可以获得每个孩子的密钥并用它来膨胀ListView。

DataSnapshot元素有一个名为getKey().

的方法

这是文档。 DataSnapshot getKey() Method

答案 1 :(得分:0)

你可以获得jsonobject然后获取将返回JSONArray的名称。 代码:

String jsonstr = json;//This is the JSON string

JSONObject jo = new JSONObject(jsonstr);
JSONObject chat = jo.getJSONObject("chat");
JSONArray jsonNames = chat.names();
String[] names = null;
for(i=0; i < jsonNames.length();i++)
    names[i] = jsonNames.get(i);

现在在任何你想要的地方使用这个名字数组。