在Firebase Android中将带子对象的值转换为Java对象

在Firebase Android中将带子对象的值转换为Java对象,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我在Firebase中阅读了关于如何通过其子级获取价值的文章 现在我想将该值转换为Java对象。我可以这样做吗?如果可以,我怎样才能做到 现在我想将该值转换为Java对象。我可以这样做吗 你当然可以!事实上,我也回答了这个问题。因此,要解决这个问题,首先需要创建两个POJO(模型)类: 及 要将该数据作为MailId和MailText类的对象获取,请使用以下代码: DatabaseReference rootRef = FirebaseDatabase.getInstance().getRef

我在Firebase中阅读了关于如何通过其子级获取价值的文章

现在我想将该值转换为Java对象。我可以这样做吗?如果可以,我怎样才能做到

现在我想将该值转换为Java对象。我可以这样做吗

你当然可以!事实上,我也回答了这个问题。因此,要解决这个问题,首先需要创建两个POJO(模型)类:

要将该数据作为
MailId
MailText
类的对象获取,请使用以下代码:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference newRef = rootRef.child("new");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.child("mailID").getChildren()) {
            MailId mailId = ds.getValue(MailId.class);
            Log.d("TAG", mailId.email + " / " + mailId.name);
        }
        for(DataSnapshot ds : dataSnapshot.child("mailText").getChildren()) {
            MailText mailText = ds.getValue(MailText.class);
            Log.d("TAG", mailText.subject + " / " + mailText.title);
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
    }
};
newRef.addListenerForSingleValueEvent(valueEventListener);

嗯,不过这次否决票是真的。你不应该将类实现为可序列化吗?@GauravMall不,不应该。Firebase实时数据库SDK使用公共无参数构造函数反序列化来自数据库的对象,如您所见,它出现在我的代码中。无需实现
Serializable
,因为所有属性都是类型,并且都是可序列化的。@GauravMall如果您对某个问题不确定或没有信心,则不应否决投票。你可以简单地问一个问题,我可以向你解释。希望你重新考虑我的回答,撤回否决票。我不是不确定。实际上,我已经构建了几个应用程序,并且总是使用Serializable。但现在我想起来了,它们还包含整数和其他数据类型。因此,是的,你是对的。如果任何答案对你有帮助,请选择它们(这只是一个提醒,如果你想要其他答案,也欢迎你等待其他答案)
class MailText {
    public String subject, title;

    MailText() {}
}
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference newRef = rootRef.child("new");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.child("mailID").getChildren()) {
            MailId mailId = ds.getValue(MailId.class);
            Log.d("TAG", mailId.email + " / " + mailId.name);
        }
        for(DataSnapshot ds : dataSnapshot.child("mailText").getChildren()) {
            MailText mailText = ds.getValue(MailText.class);
            Log.d("TAG", mailText.subject + " / " + mailText.title);
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
    }
};
newRef.addListenerForSingleValueEvent(valueEventListener);