Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.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
Java 检索时,Firebase无法跳转到类型_Java_Android_Json_Firebase_Firebase Realtime Database - Fatal编程技术网

Java 检索时,Firebase无法跳转到类型

Java 检索时,Firebase无法跳转到类型,java,android,json,firebase,firebase-realtime-database,Java,Android,Json,Firebase,Firebase Realtime Database,我在试图从Firebase检索时遇到了一些问题。以下是firebase中的“我的用户”表: 我试图像一个有多个字段的用户一样存储。我存储错了吗? My Users.java: public class Users { public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public Str

我在试图从Firebase检索时遇到了一些问题。以下是firebase中的“我的用户”表:

我试图像一个有多个字段的用户一样存储。我存储错了吗?

My Users.java:

public class Users {
public String getUserName() {
    return userName;
}

public void setUserName(String userName) {
    this.userName = userName;
}

public String getPassword() {
    return password;
}

public void setPassword(String password) {
    this.password = password;
}

public String getPhone() {
    return phone;
}

public void setPhone(String phone) {
    this.phone = phone;
}

public String getAddress() {
    return address;
}

public void setAddress(String address) {
    this.address = address;
}

public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}

public String getQuestion() {
    return question;
}

public void setQuestion(String question) {
    this.question = question;
}

public String getAnswer() {
    return answer;
}

public void setAnswer(String answer) {
    this.answer = answer;
}

private String userName;
private String password;
private String address;
private String phone;
private String email;
private String question;
private String answer;

}
当我尝试从Firebase检索JSON时:

btnSignin.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            //Creating firebase object
            Firebase ref = new Firebase(Config.FIREBASE_URL);
            //Value event listener for realtime data update
            ref.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot snapshot) {
                    for (DataSnapshot postSnapshot : snapshot.getChildren()) {
                        //Getting the data from snapshot
                        Users user = postSnapshot.getValue(Users.class);
                        System.out.println(user.getUserName()); //Testing

                    }
                }

                @Override
                public void onCancelled(FirebaseError firebaseError) {
                    System.out.println("The read failed: " + firebaseError.getMessage());
                }
            });
        }
    });
但是,我收到以下错误消息:

07-01 11:32:50.735 1025-1025/com.apps E/AndroidRuntime: FATAL EXCEPTION: main
com.firebase.client.FirebaseException: Failed to bounce to type
    at com.firebase.client.DataSnapshot.getValue(DataSnapshot.java:185)
    at com.gabrielheng.zhapalangapps.Login$1$1.onDataChange(Login.java:49)
    at com.firebase.client.core.ValueEventRegistration.fireEvent(ValueEventRegistration.java:45)
    at com.firebase.client.core.view.DataEvent.fire(DataEvent.java:45)
    at com.firebase.client.core.view.EventRaiser$1.run(EventRaiser.java:38)
    at android.os.Handler.handleCallback(Handler.java:605)
    at android.os.Handler.dispatchMessage(Handler.java:92)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:4512)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:982)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:749)
    at dalvik.system.NativeStart.main(Native Method)
 Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "gab" (class Entity.Users), not marked as ignorable (7 known properties: , "address", "question", "userName", "password", "email", "answer", "phone"])
    at [Source: java.io.StringReader@416d8540; line: 1, column: 9] (through reference chain: Entity.Users["gab"])
    at com.fasterxml.jackson.databind.DeserializationContext.reportUnknownProperty(DeserializationContext.java:555)
    at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:708)
    at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1160)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:315)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:121)
    at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:2888)
    at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2034)
    at com.firebase.client.DataSnapshot.getValue(DataSnapshot.java:183)
    at com.gabrielheng.zhapalangapps.Login$1$1.onDataChange(Login.java:49) 
    at com.firebase.client.core.ValueEventRegistration.fireEvent(ValueEventRegistration.java:45) 
    at com.firebase.client.core.view.DataEvent.fire(DataEvent.java:45) 
    at com.firebase.client.core.view.EventRaiser$1.run(EventRaiser.java:38) 
    at android.os.Handler.handleCallback(Handler.java:605) 
    at android.os.Handler.dispatchMessage(Handler.java:92) 
    at android.os.Looper.loop(Looper.java:137) 
    at android.app.ActivityThread.main(ActivityThread.java:4512) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:511) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:982) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:749) 
    at dalvik.system.NativeStart.main(Native Method) 
07-01 11:32:50.790 1025-1026/com.apps D/dalvikvm: GC_CONCURRENT freed 456K, 13% free 9663K/11015K, paused 21ms+7ms
有什么想法吗?提前感谢。

您的用户类需要一个无参数构造函数:

public Users() {
}
这一点在本文中进行了解释

我们不再处理原语类型,而是按照我们所做的做 保存用户时。我们将创建一个表示博客的Java类 邮递和上次一样,我们必须确保字段名匹配 Firebase数据库中属性的名称,并给出 类默认的无参数构造函数

您的Users类需要无参数构造函数:

public Users() {
}
这一点在本文中进行了解释

我们不再处理原语类型,而是按照我们所做的做 保存用户时。我们将创建一个表示博客的Java类 邮递和上次一样,我们必须确保字段名匹配 Firebase数据库中属性的名称,并给出 类默认的无参数构造函数


堆栈跟踪中明确提到了该错误:

原因:com.fasterxml.jackson.databind.exc.UnrecognizedProperty异常:无法识别的字段gab类实体。未标记为可忽略的用户7个已知属性:、地址、问题、用户名、密码、电子邮件、答案、电话]

由于您的JSON没有一个名为gab的属性,看起来您只是在JSON树中读取错误级别的数据

解决方案是将侦听器连接到“用户”节点树中较低的一级:


堆栈跟踪中明确提到了该错误:

原因:com.fasterxml.jackson.databind.exc.UnrecognizedProperty异常:无法识别的字段gab类实体。未标记为可忽略的用户7个已知属性:、地址、问题、用户名、密码、电子邮件、答案、电话]

由于您的JSON没有一个名为gab的属性,看起来您只是在JSON树中读取错误级别的数据

解决方案是将侦听器连接到“用户”节点树中较低的一级:


如果您的类未定义任何构造函数,编译器将生成默认的no args构造函数,Firebase代码将使用反射找到该构造函数。虽然我通常不依赖于这种编译器行为,但缺少显式的无参数构造函数不应该导致这里的问题。@Frank:Ooops。我的错。我没有使用Firebase的旧版本,而是依赖文档-@嘿,但这并不能解决问题。你有什么想法吗?从这个意义上讲,文档是未经修改的。该指南将记录推荐的做法,即即使技术上不需要,也要包括这样的构造函数。但这并不是这个错误的原因。我下面的答案是原因。像往常一样,详细信息在堆栈跟踪中,尽管也像往常一样不容易解析。@BobSnyder您救了我的命如果您的类没有定义构造函数,编译器将生成默认的无参数构造函数,Firebase代码将使用反射找到该构造函数。虽然我通常不依赖于这种编译器行为,但缺少显式的无参数构造函数不应该导致这里的问题。@Frank:Ooops。我的错。我没有使用Firebase的旧版本,而是依赖文档-@嘿,但这并不能解决问题。你有什么想法吗?从这个意义上讲,文档是未经修改的。该指南将记录推荐的做法,即即使技术上不需要,也要包括这样的构造函数。但这并不是这个错误的原因。我下面的答案是原因。像往常一样,细节在堆栈跟踪中,尽管也像往常一样不容易解析。@BobSnyder你救了我的命我明白了我明白了。对不起,我的错。我忘了我添加了一个子级别来进行分类,这样我的数据就更清晰了。谢谢你指出错误!我明白了,我明白了。对不起,我的错。我忘了我添加了一个子级别来进行分类,这样我的数据就更清晰了。谢谢你指出错误!