【发布时间】:2016-01-17 14:08:32
【问题描述】:
我有像上面这样的数据,我正在尝试为此编写 POJO 类,但它使
01-18 21:02:08.101 28838-28838/thamarai.techundefined.com E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: thamarai.techundefined.com, PID: 28838
com.firebase.client.FirebaseException: Failed to bounce to type
at com.firebase.client.DataSnapshot.getValue(DataSnapshot.java:185)
at net.simplifiedcoding.imageuploadsample.ProcessImages$2.onDataChange(ProcessImages.java:144)
at com.firebase.client.core.ValueEventRegistration.fireEvent(ValueEventRegistration.java:53)
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:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5086)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: com.fasterxml.jackson.databind.JsonMappingException: No suitable constructor found for type [simple type, class net.simplifiedcoding.imageuploadsample.ProcessImages$RetriveUserData]: can not instantiate from JSON object (need to add/enable type information?)
at [Source: java.io.StringReader@41c63110; line: 1, column: 2]
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:984)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:276)
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 net.simplifiedcoding.imageuploadsample.ProcessImages$2.onDataChange(ProcessImages.java:144)
at com.firebase.client.core.ValueEventRegistration.fireEvent(ValueEventRegistration.java:53)
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:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5086)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
这是我的代码
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
Log.i("FireBase", "snapshot " + snapshot);
RetriveUserData data = snapshot.getValue(RetriveUserData.class);
Log.i("FireBase", "Data " + data.getAPIkey());
}
@Override
public void onCancelled(FirebaseError firebaseError) {
Log.i("FireBase", "The read failed: " + firebaseError.getMessage());
}
});
这里是 POJO
public class RetriveUserData {
private String fullName;
private String apikey;
public RetriveUserData() {
// empty default constructor, necessary for Firebase to be able to deserialize blog posts
}
public String getFullName() {
return fullName;
}
public String getAPIkey() {
return apikey;
}
}
更新
这是 json 我得到了什么(记录)
DataSnapshot { key = 8c73191e-ba59-417a-b8ae-a5fed541c761, value = {fullName=Thamaraiselvam, apikey=sfsdfsdjfosf} }
看起来我在做小问题,但不知道它在哪里。
【问题讨论】:
-
该堆栈跟踪不完整。请添加整个堆栈跟踪,因为通常会有更多异常,并且这些异常表明实际原因。不过我最初的猜测是 RetriveUserData 是一个内部类,在这种情况下,您需要将其标记为静态。
-
请添加实际的 JSON(而不是指向它的屏幕截图的链接)、最少的代码(现在我们缺少
ref指向的内容)和完整的堆栈跟踪你得到的错误。没有我投票关闭的那些,因为我们缺少stackoverflow.com/help/mcve。 -
@FrankvanPuffelen 已添加完整跟踪请检查并添加 json 也