-
Notifications
You must be signed in to change notification settings - Fork 123
Closed
Milestone
Description
YearMonths with years outside the range 0000 to 9999 must be prefixed by the plus or minus symbol when the format uuuu-MM (default format) is used. Unfortunately the toString of YearMonth does not add a plus sign for years > 9999.
The code
val writeValueAsString = objectMapper.writeValueAsString(YearMonth.of(10000, 1))
objectMapper.readValue<YearMonth>(writeValueAsString)
fails with
com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `java.time.YearMonth` from String "10000-01": Failed to deserialize java.time.YearMonth: (java.time.format.DateTimeParseException) Text '10000-01' could not be parsed at index 0
at [Source: (String)""10000-01""; line: 1, column: 1]
Changing the constructor
public YearMonthDeserializer() // public since 2.12
{
this(DateTimeFormatter.ofPattern("uuuu-MM"));
}
to
public YearMonthDeserializer() // public since 2.12
{
this(DateTimeFormatter.ofPattern("u-MM"));
}
solves this problem,
Metadata
Metadata
Assignees
Labels
No labels