报错信息:
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of 'xxx' (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
原因:
com.fasterxml.jackson.databind.ObjectMapper.readValue(String content, Class<T> valueType)方法,传入的class对象没有无参构造器,具体原因是在该对象上同时使用了@Data和@AllArgsConstructor注解,@AllArgsConstructor阻止了@Data生成(无参)构造器,从而该对象只有一个全参构造器,没有无参构造器,导致反序列化失败。应当注意显式的构造器和@NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor都会抑制@Data生成构造器。
解决方法:
显式添加无参构造器或使用@NoArgsConstructor
本文解析了Jackson ObjectMapper在尝试将JSON转换为带@Data和@AllArgsConstructor注解的对象时,由于缺少无参构造器导致的序列化失败问题。解决方法包括显式添加无参构造器或利用@NoArgsConstructor注解。
1812





