0

我有如下字符串,

value = {"name":"John","timeStamp":"2020-08-11T13:31:31"}

我的 Pojo 课是,

@Getter
@ToString
@AllArgsConstructor
@NoArgsConstructor
class Person{
    
    private String name;    

    @JsonFormat(pattern = "YYYY-MM-dd HH:mm", shape = JsonFormat.Shape.STRING)
    @JsonSerialize(using = LocalDateTimeSerializer.class)
    private LocalDateTime timeStamp; 
}

我使用下面的工件,根据https://github.com/FasterXML/jackson-modules-java8

 <dependency>
            <groupId>com.fasterxml.jackson.module</groupId>
            <artifactId>jackson-module-parameter-names</artifactId>
            <version>2.11.1</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.datatype</groupId>
            <artifactId>jackson-datatype-jdk8</artifactId>
            <version>2.11.1</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.datatype</groupId>
            <artifactId>jackson-datatype-jsr310</artifactId>
            <version>2.11.1</version>
        </dependency>

我使用以下配置,

 final ObjectMapper objectMapper = JsonMapper.builder()
                        .addModule(new ParameterNamesModule())
                        .addModule(new Jdk8Module())
                        .addModule(new JavaTimeModule())
                        .build();

objectMapper.readValue(value, Person.class)

我收到以下异常,

Caused by: java.io.NotSerializableException: java.time.format.DateTimeFormatter

我也在时间戳中尝试了以下内容,但没有运气

 @JsonFormat(pattern = "yyy-MM-ddThh:mm:ss")
4

1 回答 1

1

您显示的 ISO 格式是默认格式,因此无需变得复杂,它应该可以工作!

class Person {
    private String name;    
    private LocalDateTime timeStamp; 
}

PS。建议您使用jackson-bom托管依赖项来避免 2.11.1 到处出现。请参阅如何在 Maven 中使用 BOM 文件?对于 BOM 示例。

于 2020-08-11T12:43:03.230 回答