Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 无法读取Firebase数据库类型对象中的数据(反序列化时应为列表,但得到的类为java.lang.String)_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Android 无法读取Firebase数据库类型对象中的数据(反序列化时应为列表,但得到的类为java.lang.String)

Android 无法读取Firebase数据库类型对象中的数据(反序列化时应为列表,但得到的类为java.lang.String),android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我的Firebase数据库结构: -- users: ------ Id: --------- studentInfo: 我想得到一个studentInfo对象,然后得到它的favList String userUid = mFirebaseUser.getUid(); studentInfoRef = mDatabase.child("users").child(userUid).child("studentInfo"); studentInfoRef.

我的Firebase数据库结构:

-- users:

------ Id:

--------- studentInfo:
我想得到一个
studentInfo
对象,然后得到它的
favList

        String userUid = mFirebaseUser.getUid();
    studentInfoRef = mDatabase.child("users").child(userUid).child("studentInfo");

    studentInfoRef.addListenerForSingleValueEvent(new ValueEventListener() {

        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            StudentInfo student = dataSnapshot.getValue(StudentInfo.class);

            List<String> mFavRest = student.getFavRestaurants();

            if (mFavRest.contains(restaurantUId)) {
                //do something
            } else {
                mFavRest.add(restaurantUId);

                studentInfoRef.child("favRestaurants").setValue(mFavRest);
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            System.out.println("The read failed: " + databaseError.getCode());
        }
    });
我得到这个错误:

com.google.firebase.database.DatabaseException: Expected a List while deserializing, but got a class java.lang.String
完整堆栈跟踪:

E/AndroidRuntime: FATAL EXCEPTION: main
              Process: com.example.unifood, PID: 30540
              com.google.firebase.database.DatabaseException: Expected a List while deserializing, but got a class java.lang.String
                  at com.google.android.gms.internal.zzaln.zza(Unknown Source)
                  at com.google.android.gms.internal.zzaln.zza(Unknown Source)
                  at com.google.android.gms.internal.zzaln.zzb(Unknown Source)
                  at com.google.android.gms.internal.zzaln$zza.zze(Unknown Source)
                  at com.google.android.gms.internal.zzaln$zza.zzcc(Unknown Source)
                  at com.google.android.gms.internal.zzaln.zzd(Unknown Source)
                  at com.google.android.gms.internal.zzaln.zzb(Unknown Source)
                  at com.google.android.gms.internal.zzaln.zza(Unknown Source)
                  at com.google.firebase.database.DataSnapshot.getValue(Unknown Source)
                  at com.example.unifood.activities.RestaurantActivity$7.onDataChange(RestaurantActivity.java:240)
                  at com.google.firebase.database.Query$1.onDataChange(Unknown Source)
                  at com.google.android.gms.internal.zzaie.zza(Unknown Source)
                  at com.google.android.gms.internal.zzaje.zzcta(Unknown Source)
                  at com.google.android.gms.internal.zzajh$1.run(Unknown Source)
                  at android.os.Handler.handleCallback(Handler.java:739)
                  at android.os.Handler.dispatchMessage(Handler.java:95)
                  at android.os.Looper.loop(Looper.java:135)
                  at android.app.ActivityThread.main(ActivityThread.java:5290)
                  at java.lang.reflect.Method.invoke(Native Method)
                  at java.lang.reflect.Method.invoke(Method.java:372)
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:911)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:706)
我的学生信息课:

public class StudentInfo {


private String campusId;
private List<String> favRestaurants;
private List<String> favProducts;

public StudentInfo() {
    this.favProducts = new ArrayList<String>();
    this.favRestaurants = new ArrayList<String>();
}

public StudentInfo(String campusId) {
    this();
    this.campusId = campusId;
}

// getters and setters
}
公共班级学生信息{
私有字符串campusId;
私人房地产开发商名单;
私有列表FAVP产品;
公共学生信息{
this.favProducts=新的ArrayList();
this.favRestaurants=新的ArrayList();
}
公共学生信息(字符串campusId){
这个();
this.campusId=campusId;
}
//接球手和接球手
}
更新


我清理了firabase数据库中的所有用户,创建了一个要测试的新用户,并且运行良好:)

请更新您的帖子,以包含Firebase结构的实际图像(如果可以),并发布
StudentInfo.class
的代码。谢谢,我不能包括image:,这就是我说“用户-->Id-->学生信息”的原因。我将发布学生信息
public class StudentInfo {


private String campusId;
private List<String> favRestaurants;
private List<String> favProducts;

public StudentInfo() {
    this.favProducts = new ArrayList<String>();
    this.favRestaurants = new ArrayList<String>();
}

public StudentInfo(String campusId) {
    this();
    this.campusId = campusId;
}

// getters and setters
}