public class User {
@SerializedName("username")
private String userName;
@SerializedName("email")
private String email;
@SerializedName("bags")
private List<Bag> bags;
.
.
.
A类和我在我的火力有这个数据DB
之前,我添加了“袋”项目,该对象创建正常,我使用这种方法来检索用户的uid:
public void retrieveUserByUid(String uid, FirebaseRetrieveUserListener listener){
Query userQuery = dbReference.child(FirebaseChild.users.name()).child(uid);
final FirebaseRetrieveUserListener dataListener = listener;
userQuery.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
User user = dataSnapshot.getValue(User.class);
dataListener.retrieveUserByUid(user);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
正如我所说,这个工作没有“袋”项,当我把它,我得到的错误是这样的。
com.google.firebase.database.DatabaseException: Expected a List while deserializing, but got a class java.util.HashMap
发生这种情况时,我尝试这样做
User user = dataSnapshot.getValue(User.class);
我搜索了很多关于如何检索列表,但我觉得是检索一个列表对象,而不是一个“混合“带有”单个数据“的对象和一个列表。
我想手动反序列化是在这种情况下,更好的方法。但是你可能会尝试使用'HashMap'这个袋子属性。 –