【问题标题】:How to store a collection of data in a class where there is a nested collection in that data from Firebase in Java?如何将数据集合存储在一个类中,其中 Java 中的 Firebase 数据中有一个嵌套集合?
【发布时间】:2016-04-01 05:45:39
【问题描述】:

好的,所以标题可能有点模棱两可或难以理解,所以我会尽量详细说明。我正在编写一个有用户的 android 应用程序。

firebase 中的 json 如下所示:

user{
   $auid{
      "Name": "blah",
      "email": "blah",
      "image": "blah",
      "conversationKeys"{
                         "randKey":"key",
                         "randKey":"key",
                         "randKey":"key",
                        }
                 }
}

所以我遇到的问题是嵌套集合(对话键),它们是完全不同集合中对话的键。我不知道如何将它们存储在我拥有的用户 java 类中。我曾尝试将类中的值设为 arrayList,希望它能正常工作。

我用它来检索数据:

userRef = new Firebase((new FireBaseAPI()).getUsersURL()+"/"+sharedPrefs.getAuthuid());
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
user = dataSnapshot.getValue(UserData.class);
}

我希望能够将它们全部存储在一个类中,其中对话键存储在 arrayList 或数组或其他任何东西中。

任何帮助将不胜感激。如果需要更清晰,请不要犹豫。感谢您的帮助。

另外,用户数据类是:

    public class UserData {

    public String displayName;
    public String profileImageURL;
    public String coverImageURL;
    public String lastLogin;
    public String provider;
    public String bio;
    public ArrayList<String> conversationKeys;

    public ArrayList<String> getConversationKeys() {
        return conversationKeys;
    }

    public void setConversationKeys(ArrayList<String> conversationKeys) {
        this.conversationKeys = conversationKeys;
    }

    public UserData(String name,
                    String profilePic,
                    String coverPic) {

        this.displayName = name;
        this.profileImageURL = profilePic;
        this.coverImageURL = coverPic;
    }

    public UserData() {

    }

    public String getBio() {
        return bio;
    }

    public void setBio(String bio) {
        this.bio = bio;
    }

    public String getProvider() {
        return provider;
    }

    public void setProvider(String provider) {
        this.provider = provider;
    }

    public String getLastLogin() {
        return lastLogin;
    }



    public void setLastLogin(String lastLogin) {
        this.lastLogin = lastLogin;
    }

    public String getProfileImageURL() {
        return profileImageURL;
    }

    public void setProfileImageURL(String profileImageURL) {
        this.profileImageURL = profileImageURL;
    }

    public String getCoverImageURL() {
        return coverImageURL;
    }

    public void setCoverImageURL(String coverImageURL) {
        this.coverImageURL = coverImageURL;
    }

    public String getDisplayName() {
        return displayName;
    }


    public void setDisplayName(String displayName) {
        this.displayName = displayName;
    }
}

【问题讨论】:

  • 在下面回答。下一次,您能否确保您显示的 JSON 与您显示的 Java 类相匹配?它还有一个额外的优势,即我们对blahrandKey 之类的解释没有任何区别。您可以使用仪表板中的“导出”按钮轻松地从 Firebase 数据库中获取(部分)JSON。
  • 当然,非常感谢您的回复,我应该意识到它需要进入地图。

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


【解决方案1】:

对话键存储为键/值对,而不是数组。 因此,您需要将它们检索到 Map(而不是您尝试获取的数组/列表)中。

对于 JSON 中的 conversationKeys 属性,将其添加到您的类中:

public class UserData {
    ...
    private Map<String,String> conversationKeys;

    public Map<String,String> getConversationKeys() {
        return conversationKeys;
    }

【讨论】:

  • 嗨弗兰克!是否可以使用 Java(Spring 框架)和 Firebase 作为数据库来制作应用程序并通过 Google App Engine 进行托管..?
猜你喜欢
  • 1970-01-01
  • 2021-05-14
  • 2019-12-11
  • 1970-01-01
  • 2021-12-07
  • 2015-09-14
  • 1970-01-01
  • 2021-08-20
  • 1970-01-01
相关资源
最近更新 更多