Jackson Cannot deserialize value of type `xxx` from String “xxx“ : Failed to deserialize xxx问题解决
问题描述:
com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `java.time.LocalDateTime` from String "2022-05-18 11:35:35": Failed to deserialize java.time.LocalDateTime: (java.time.format.DateTimeParseException) Text '2022-05-18 11:35:35' could not be parsed at index 10
at [Source: (String)"{"localDate":"2022-05-18","localDateStr":null,"localDateTime":"2022-05-18 11:35:35","localDateTimeStr":null}"; line: 1, column: 63] (through reference chain: com.xudongbase.common.model.TestModel["localDateTime"])
问题分析:
1、由于yyyy-MM-dd HH:mm:ss 格式的String数据不能转换LocalDateTime类型数据,导致报错。
/**
* 测试单个实体反序列化和反序列化
*/
@Test
public void testModelSerializeAndDeserialize() throws Exception {
TestModel testModel = new TestModel();
testModel.setLocalDate(LocalDate.now());
testModel.setLocalDateTime(LocalDateTime.now());
String jsonStr = objectMapper.writeValueAsString(testModel);
testModel = objectMapper.readValue(objectMapper.getFactory().createParser(jsonStr),TestModel.class);
}
解决办法:LocalDateTime类型变量添加@JsonFormat注解指定日期格式即可。
@Data
public class TestModel {
private LocalDate localDate;
private String localDateStr;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private LocalDateTime localDateTime;
private String localDateTimeStr;
}
版权声明:本文为qq_38974638原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。