5

我有这个代码:

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 typeJson 中有一个,当我尝试阅读它时它就不起作用。我有这个错误:

com.fasterxml.jackson.databind.JsonMappingException:无法从整数中实例化类型 [简单类型,类 org.codehaus.jackson.generated.java.lang.Number] 的值;没有单整数参数构造函数/工厂方法

我怎样才能让它接受类型Long?映射器中是否有任何功能可以启用?

4

2 回答 2

5

在 Person 中创建一个接受整数的构造函数(而不是像你做的那样长)。如果您肯定要接受 long,那么请尝试创建一个接受 Number 的构造函数。

于 2016-03-08T19:06:21.043 回答
0

在 Person 中创建一个接受整数的构造函数(而不是像你做的那样长)。如果您肯定要接受 long,那么请尝试创建一个接受 Number 的构造函数。假设你有一个像这样的 bean/model 类

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 值

我希望你的

没有单整数参数构造函数/工厂方法

错误将消失

于 2020-02-14T08:04:30.940 回答