No problem, happy it helps. And yes, it's a new feature and not widely-known. They are described here:
https://medium.com/@cowtowncoder/jackson-2-8-features-5fc692887944#.dneevz7zb but there isn't much more; also, 2.9 will add a few other settings to override, and intention is to keep on extending configurability this way. -+ Tatu +- On Mon, Mar 20, 2017 at 10:48 AM, Dam <[email protected]> wrote: > ConfigOverride is a great option i am pleased to know that. > > Thanks a lot for your response, > > On Monday, March 20, 2017 at 6:17:30 AM UTC+1, Tatu Saloranta wrote: >> >> Ok, first things first: I don't think you need to configure separate >> serializer/deserializer here, but call >> >> ObjectMapper.setDateFormat(new SimpleDateFormat(....)) >> >> or alternatively, if you are using Jackson 2.8, may also define >> default format for Date: >> >> mapper.configOverride(Date.class) >> .setFormat(JsonFormat.Value.forPattern("....)); >> >> These methods are more robust as they do not rely on knowing internals >> of serializer/deserializer. >> >> But as to registration approach: there is nothing special about >> registration, although you should just be using `SimpleModule` and not >> trying to add anything to `JavaTimeModule`. The only possible >> complication I can think of is that since there are 2 methods: >> >> public SimpleModule addSerializer(JsonSerializer<?> ser) { } >> public <T> SimpleModule addSerializer(Class<? extends T> type, >> JsonSerializer<T> ser) { } >> >> in latter case type bounds may make compiler complain without casts. >> If so, you would just need to cast serializer instance to have type >> `JsonSerializer<Date>`. >> >> I hope this helps, >> >> -+ Tatu +- >> >> ps. This is usage question, so really should go in `jackson-user`, not >> `jack >> >> On Thu, Mar 16, 2017 at 10:13 AM, Dam <[email protected]> wrote: >> > Hello, >> > >> > I declare a custom object mapper with a DateSerializer with a custom >> > format >> > like this : >> > >> > public class CustomObjectMapper extends ObjectMapper >> > { >> > public CustomObjectMapper() >> > { >> > configure(); >> > } >> > >> > private void configure() >> > { >> > super.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, >> > false); >> > JavaTimeModule module = new JavaTimeModule(); >> > module.addSerializer(Date.class, new DateSerializer(false, new >> > SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"))); >> > super.registerModule(module); >> > } >> > } >> > >> > And it's OK, but when I want to add a deserializer, I'm expected to do >> > something like this : >> > >> > module.addDeserializer(Date.class, new >> > DateDeserializer("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")); >> > >> > But it's doesn't work because the signature is : >> > >> > >> > com.fasterxml.jackson.databind.deser.std.DateDeserializers.DateDeserializer.DateDeserializer(DateDeserializer >> > base, DateFormat df, String formatString) >> > >> > >> > What I have to put in "DateDeserializer base" and in String formatString >> > ? >> > I suspect an inconsistency in the code or I don't understand the usage >> > of >> > DateDeserializer ? Someone can help me ? >> > >> > -- >> > You received this message because you are subscribed to the Google >> > Groups >> > "jackson-dev" group. >> > To unsubscribe from this group and stop receiving emails from it, send >> > an >> > email to [email protected]. >> > For more options, visit https://groups.google.com/d/optout. > > -- > You received this message because you are subscribed to the Google Groups > "jackson-dev" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "jackson-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
