You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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
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
publicYearMonthDeserializer() // public since 2.12
{
this(DateTimeFormatter.ofPattern("uuuu-MM"));
}
to
publicYearMonthDeserializer() // public since 2.12
{
this(DateTimeFormatter.ofPattern("u-MM"));
}
solves this problem,
The text was updated successfully, but these errors were encountered:
I was first unable to reproduce, since the default serialization of YearMonth is an array (with 2.14 at least?), but when forcing output as String issue occurs.
cowtowncoder
changed the title
YearMonthDeserializer fails for year > 9999YearMonthDeserializer fails for year > 9999
Sep 24, 2022
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
fails with
Changing the constructor
to
solves this problem,
The text was updated successfully, but these errors were encountered: