如何使用 Jackson 和 RestTemplate 将 24 小时日期字符串反序列化为

我有以下...


public static final String DATE_PATTERN = "yyyy-MM-dd'T'hh:mm:ss.SSSZ";

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DATE_PATTERN)

private LocalDate created;


return this.restTemplate.postForObject(url, entity, SearchResult.class);

当我运行代码时,它会出现以下错误...


java.time.DateTimeException: Invalid value for ClockHourOfAmPm (valid values 1 - 12): 13

    at java.base/java.time.temporal.ValueRange.checkValidValue(ValueRange.java:311) ~[na:na]

    at java.base/java.time.temporal.ChronoField.checkValidValue(ChronoField.java:717) ~[na:na]

如何将其反序列化为 LocalDate?常规 Java7 日期工作正常。


最终解决方案看起来像这样


public static final String DATE_PATTERN = "yyyy-MM-dd'T'HH:mm:ss.SSSZ";


public class LocalDateDeserializer extends StdDeserializer<LocalDate>{

    protected LocalDateDeserializer(){

        super(LocalDate.class);

    }

    @Override

    public LocalDate deserialize(JsonParser parser, DeserializationContext context) throws IOException {

        return LocalDate.parse(parser.readValueAs(String.class), DateTimeFormatter.ofPattern(JiraService.DATE_PATTERN));

    }

}


public class LocalDateSerializer extends StdSerializer<LocalDate> {


    public LocalDateSerializer() {

        super(LocalDate.class);

    }


    @Override

    public void serialize(LocalDate value, JsonGenerator generator, SerializerProvider provider) throws IOException {

        generator.writeString(value.format(DateTimeFormatter.ofPattern(JiraService.DATE_PATTERN)));

    }

}


@JsonDeserialize(using = LocalDateDeserializer.class)

@JsonSerialize(using = LocalDateSerializer.class)

private LocalDate created;


慕沐林林
浏览 368回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java