JsonMappingException:不能实例化从整数数字类型的值;没有单一的整数参数构造函数/工厂方法 [英] JsonMappingException: Can not instantiate value of type from Integral number; no single-int-arg constructor/factory method
问题描述
我试图查询Firebase上我的JSON树中的一些数据。我继续创建我的POJO,但我不断得到 JsonMappingException:不能从积分数字实例化[simple type,class net.rmoreno.ally.Ally]类型的值;没有单一的整数参数构造函数/工厂方法
错误。我已经这样做了,它只考虑了一个字符串电子邮件
但它不断崩溃,并告诉我问题是一个积分数字。我该如何解决这个问题。
下面是让代码崩溃的代码
query.addChildEventListener(new ChildEventListener(){
ArrayList< Ally> allyArrayList = new ArrayList<>;
@Override
public void onChildAdded(DataSnapshot dataSnapshot,String s){
for(DataSnapshot userSnapshot:dataSnapshot.getChildren()){
Ally information = userSnapshot.getValue(Ally.class);
allyArrayList.add(information );
}
}
这是我的POJO
@JsonIgnoreProperties({latitude,longitude,phone,availability,email})
公共班同盟{
字符串名称;
//字符串电子邮件;
//字符串电话;
// int可用性;
public Ally(){
}
public String getName(){
返回名称;
}
// public String getEmail(){
// return email;
//
// public String getPhone(){
// return phone;
//
// public int getAvailability(){
// return availability;
$ / code $ / $ p
这是我的堆栈轨迹
com.firebase.client.FirebaseException:无法在com.firebase.client.DataSnapshot.getValue(DataSnapshot)中键入
。 java:185)
at net.rmoreno.ally.MainActivity $ 1.onChildAdded(MainActivity.java:46)
at com.firebase.client.core.ChildEventRegistration.fireEvent(ChildEventRegistration.java:58)
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:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop (Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java .la ng.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal。 os.ZygoteInit.main(ZygoteInit.java:694)
引起:com.fasterxml.jackson.databind.JsonMappingException:无法从Integral实例化[simple type,class net.rmoreno.ally.Ally]类型的值数;没有单一的整数参数构造函数/工厂方法
at com.fasterxml.jackson.databind.deser.std.StdValueInstantiator.createFromInt(StdValueInstantiator.java:320)
at com.fasterxml.jackson.databind。 deser.BeanDeserializerBase.deserializeFromNumber(BeanDeserializerBase.java:1012)
at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther(BeanDeserializer.java:138)
at com.fasterxml.jackson.databind。 deser.BeanDeserializer.deserialize(BeanDeserializer.java:123)
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.rmoreno.ally.MainActivity $ 1.onChildAdded(MainActivity.java:46 )
在com.firebase.client.core.ChildEventRegistrati on.fireEvent(ChildEventRegistration.java:58)
在com.firebase.client.core.view.DataEvent.fire(DataEvent.java:45)
在com.firebase.client.core.view。 EventRaiser $ 1.run(EventRaiser.java:38)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)$ b.b android.os.Looper.loop(Looper.java:135)
android.app.ActivityThread.main(ActivityThread.java:5221)
在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:899 )
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
编辑:这是JSON结构在Firebase
解决方案在您的JSON中,您有一个数组,其余的字段像 availability , email
和 name
等存在于该数组中。
在Ally类中,你试图直接解析这些内部对象。
您应该做的是如下所示:
这是内部对象 Class:
@JsonIgnoreProperties({latitude,longitude,phone,availability email})
public class ArrayObject {
private String name;
私人字符串电子邮件;
私人字符串电话;
private int availability;
public ArrayObject(){}
public String getName(){
return name;
}
public String getEmail(){
return email;
}
public String getPhone(){
return phone;
}
public int getAvailability(){
return availability;
$ / code $ / $ p
以下是 Ally 类:
public class Ally {
private ArrayObject arrObj;
$ b $ * Getter-Setters * /
public Ally(){}
}
I'm trying to query some data that I have in my JSON Tree on Firebase. I go ahead and create my POJO but I keep getting the JsonMappingException: Can not instantiate value of type [simple type, class net.rmoreno.ally.Ally] from Integral number; no single-int-arg constructor/factory method
error. I've made it so that it only takes into consideration a String email
but it keeps crashing and telling me the problem is with an Integral number. How can I fix this.
Here is the code that makes it crash
query.addChildEventListener(new ChildEventListener() {
ArrayList<Ally> allyArrayList = new ArrayList<>();
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
for(DataSnapshot userSnapshot: dataSnapshot.getChildren()){
Ally information = userSnapshot.getValue(Ally.class);
allyArrayList.add(information);
}
}
Here is my POJO
@JsonIgnoreProperties({"latitude", "longitude","phone","availability","email"})
public class Ally {
String name;
//String email;
//String phone;
//int availability;
public Ally(){
}
public String getName(){
return name;
}
// public String getEmail(){
// return email;
// }
// public String getPhone(){
// return phone;
// }
// public int getAvailability(){
// return availability;
// }
}
Here is my stack track
com.firebase.client.FirebaseException: Failed to bounce to type
at com.firebase.client.DataSnapshot.getValue(DataSnapshot.java:185)
at net.rmoreno.ally.MainActivity$1.onChildAdded(MainActivity.java:46)
at com.firebase.client.core.ChildEventRegistration.fireEvent(ChildEventRegistration.java:58)
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:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
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:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Caused by: com.fasterxml.jackson.databind.JsonMappingException: Can not instantiate value of type [simple type, class net.rmoreno.ally.Ally] from Integral number; no single-int-arg constructor/factory method
at com.fasterxml.jackson.databind.deser.std.StdValueInstantiator.createFromInt(StdValueInstantiator.java:320)
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromNumber(BeanDeserializerBase.java:1012)
at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther(BeanDeserializer.java:138)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:123)
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.rmoreno.ally.MainActivity$1.onChildAdded(MainActivity.java:46)
at com.firebase.client.core.ChildEventRegistration.fireEvent(ChildEventRegistration.java:58)
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:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
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:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
EDIT: Here is the JSON Structure on Firebase
解决方案 In your JSON you have an Array and the rest of the fields like availability
, email
and name
etc. are present inside that array.
In the Ally Class you are trying to parse these inner objects directly.
What you should be doing instead is as follows:
Here is the Inner-Object Class:
@JsonIgnoreProperties({"latitude", "longitude","phone","availability","email"})
public class ArrayObject {
private String name;
private String email;
private String phone;
private int availability;
public ArrayObject() {}
public String getName() {
return name;
}
public String getEmail() {
return email;
}
public String getPhone() {
return phone;
}
public int getAvailability() {
return availability;
}
}
Here is the Ally Class:
public class Ally {
private ArrayObject arrObj;
/* Getter-Setters */
public Ally() {}
}
这篇关于JsonMappingException:不能实例化从整数数字类型的值;没有单一的整数参数构造函数/工厂方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文