【问题标题】:no single-int-arg constructor/factory method没有单整数参数构造函数/工厂方法
【发布时间】:2015-08-07 15:55:25
【问题描述】:

我有这个代码:

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: 不能 实例化类型的值 [简单类型,类 org.codehaus.jackson.generated.java.lang.Number] 来自整数; 没有单整数参数构造函数/工厂方法

如何让它接受Long 类型?映射器中是否有要启用的功能?

【问题讨论】:

    标签: jackson fasterxml


    【解决方案1】:

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

    【讨论】:

    • 你能举个例子吗?
    【解决方案2】:

    在接受整数的 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 值

    希望你的

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

    错误会消失

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-12
      • 2012-09-29
      • 2019-01-21
      • 1970-01-01
      • 2015-06-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多