我有这段代码:
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
每当我在Json中有Long type
时,当我尝试阅读时它就不起作用了。我有这个错误:
com.fasterxml.jackson.databind.JsonMappingException:不能 实例化类型的值[simple type,class 来自积分号的org.codehaus.jackson.generated.java.lang.Number]; 没有single-int-arg构造函数/工厂方法
如何让它接受Long
类型?在映射器中是否有要启用的功能?
答案 0 :(得分:4)
在Person中创建一个接受整数的构造函数(而不是像你一样长)。如果你肯定想接受long,那么尝试创建一个接受Number的构造函数。
答案 1 :(得分:0)
在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值
希望您
没有single-int-arg构造函数/工厂方法
错误将消失