-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Description
Version: 2.9.5
After #219 was fixed, the default format for java.sql.Date
serialization switched from string to numeric, following the default value of WRITE_DATES_AS_TIMESTAMPS
.
In order to prevent breaks, I want java.sql.Date
to serialize as a string, without changing behavior for java.util.Date
(which has always serialized as a number by default).
According to #219 (comment), I should be able to revert the behavior for java.sql.Date
only with
final ObjectMapper mapper = new ObjectMapper();
mapper.configOverride(java.sql.Date.class).setFormat(JsonFormat.Value.forPattern("yyyy-MM-dd"));
This doesn't seem to do anything, though. Looking at the code, it looks like it's because the custom format isn't actually added to SqlDateSerializer
except in the createContextual
method (https://github.com/FasterXML/jackson-databind/blob/master/src/main/java/com/fasterxml/jackson/databind/ser/std/DateTimeSerializerBase.java#L59).
For now, I've reverted this behavior with
mapper.registerModule(new SimpleModule() {
{
addSerializer(
java.sql.Date.class,
new SqlDateSerializer().withFormat(false, new SimpleDateFormat("yyyy-MM-dd"))
);
}
});
but it seems pretty hacky so I'd prefer the other method if possible.