我有这样的代码:
final Person p = new Person(1L);
final ObjectMapper mapper = JacksonUtil.INSTANCE.getMapper();
final TypeReference<HashMap<String, Object>> typeMap = new TypeReference<HashMap<String, Object>>() {};
final String personJson= mapper.writeValueAsString(p);
mapper.readValue(personJson, typeMap);
personJson
像:
"id" : 1
每当我有一个Long type
在我的Json,它不工作,当我试图读取它。我有这个错误:
com.fasterxml.jackson.databind。JsonMappingException: Can not实例化类型[简单类型,类]的值org.codehaus.jackson.generated.java.lang。Number]源自整数;没有单参数构造函数/工厂方法
如何使其接受Long
类型?映射器中是否有需要启用的特性?
在Person中创建一个构造函数,该构造函数接受一个整数(而不是像您那样长)。如果你一定要接受long类型,那么尝试创建一个接受Number类型的构造函数
在Person中创建一个构造函数,该构造函数接受一个整数(而不是像您那样长)。如果你确实想接受long类型,那么尝试创建一个接受Number类型的构造函数。假设您有一个像这样的bean/模型类
public class Person{
private Long id;
private String name;
public Person() {
super();
// TODO Auto-generated constructor stub
}
public Person(Long id) {
super();
this.id = id;
}
//getter and setter
}
这里第二个构造函数接受Long值
我希望你的
没有单参数构造函数/工厂方法
错误将消失