jackson 错误:发生了异常,

mgdq6dx1  于 2022-11-08  发布在  其他
关注(0)|答案(1)|浏览(216)

我正在使用lombok + Java来优化应用程序。该类在签名类之前有标签@Data@EqualsAndHashCode(callSuper = false)@NoArgsConstructor@AllArgsConstructor e @Builder。当我运行时,它显示以下错误:

错误:

org.apache.cxf.jaxrs.JAXRSRuntimeException:org.codehaus.jackson.map.JsonMappingException:找不到类型[简单类型,类java.time.LocalDateTime]的合适构造函数:无法从JSON对象示例化(是否需要添加/启用类型信息?),位于[源:这是一个很好的例子。行:1,列:在运行时发生异常时,可以将异常转换为可能的响应。

类别:

...

@Data
@EqualsAndHashCode(callSuper = false)
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Person {

     private LocalDateTime date;
     ...
}

我想这只Lombok鹿的标记已经足够了。有人知道吗?

wqnecbli

wqnecbli1#

1.您使用的是非常旧的Jackson版本。
1.要使Jackson使用Java 8 time,需要在ObjectMapper中添加jackson-datatype-jsr310依赖项和注册模块:

objectMapper.registerModule(new JavaTimeModule());

当前Jackson版本的完整工作示例:

Person person = new Person(LocalDateTime.now());
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new JavaTimeModule());
String json = objectMapper.writeValueAsString(person);
Person personDeserialized = objectMapper.readValue(json, Person.class);

相关性:

<dependencies>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.13.3</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.datatype</groupId>
            <artifactId>jackson-datatype-jsr310</artifactId>
            <version>2.13.3</version>
        </dependency>
    </dependencies>

相关问题