【发布时间】:2018-07-22 18:42:25
【问题描述】:
使用最新Lombok v1.6.20生成的构造函数时,Jackson无法使用构造函数。
例如反序列化时
@Data
@AllArgsConstructor
private static class TestObject {
private Integer a;
private String b;
}
我得到了
com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of TestObject: no suitable constructor found, can not deserialize from Object value (missing default constructor or creator, or perhaps need to add/enable type information?)
at [Source: {"a":0,"b":"0"}; line: 1, column: 2]
at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:270)
at com.fasterxml.jackson.databind.DeserializationContext.instantiationException(DeserializationContext.java:1456)
at com.fasterxml.jackson.databind.DeserializationContext.handleMissingInstantiator(DeserializationContext.java:1012)
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1206)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:314)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:148)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3814)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2858)
它适用于 Lombok 1.6.18。迁移到 Spring Boot 2 时可能会出现此问题。
【问题讨论】: