Hi! This is exactly what I was wondering... if there is a way to automate the default serializer injection, when the custom serializer gets detected. I am also willing to contribute to the code, if I am provided some guidance.
BR, Zsolt 2017. március 20., hétfő 21:24:27 UTC+1 időpontban Tatu Saloranta a következőt írta: > > Good luck! That approach is used quite a lot so it should work fine. > Note, too, that it may be combined with ContextualSerializer if you do > need to access annotations. > In fact you can use `createContextual()` sometimes to simply decide if > override is needed at all; if not, return default serializer from that > method and you are good to go (but if so, remember to delegate call). > > It would be great to find better ways to allow such "partial" > overrides, in a more convenient way. > But until then, Bean(De)SerializerModifier is the way to go. > > -+ Tatu +- > > > On Mon, Mar 20, 2017 at 1:08 PM, Zsolt Balanyi <zsolt....@gmail.com > <javascript:>> wrote: > > Hi! > > > > OK, thanks, then I'll go that way! > > > > BR, Zsolt > > > > 2017. március 20., hétfő 20:13:25 UTC+1 időpontban Tatu Saloranta a > > következőt írta: > >> > >> This can not be done from annotation-based serializer: it will > >> override default logic. > >> The only way to access what would otherwise be created/used as the > >> standard serializer is to register `BeanSerializerModifier`, and > >> override handling of `modifySerializer`. > >> > >> -+ Tatu +- > >> > >> > >> On Mon, Mar 20, 2017 at 11:58 AM, Zsolt Balanyi <zsolt....@gmail.com> > >> wrote: > >> > Hi! > >> > > >> > What I meant is that I would like to get (or create ) the default > >> > Jackson > >> > Serializer for the object being serialized, and store as default. > >> > Then I could implement serialize as follows: > >> > > >> > @Override > >> > public void serialize(Object o, JsonGenerator jg, SerializerProvider > sp) > >> > throws IOException { > >> > doMyStuff... > >> > default.serialize(o, jg, sp); > >> > } > >> > > >> > The challenge here is that only a no-arg constructor is called for > the > >> > serializer if the serializer is used in annotation like this: > >> > @JsonSerialize(using = UIElementSerializer.class) > >> > > >> > BR, Zsolt > >> > > >> > 2017. március 20., hétfő 19:21:29 UTC+1 időpontban Tatu Saloranta a > >> > következőt írta: > >> >> > >> >> Not 100% sure I understand the question, but if you want to access > >> >> information about annotations on property, from your custom > >> >> serializer, you need to implement `ContextualSerializer`, and then > its > >> >> `createContextual()` gets called with `BeanProperty`. > >> >> `BeanProperty` has accessors for annotation directly; or, you can > then > >> >> call `AnnotationIntrospector` (accessible from `SerializerProvider` > >> >> that is also passed). > >> >> > >> >> -+ Tatu +- > >> >> > >> >> > >> >> On Mon, Mar 20, 2017 at 5:26 AM, Zsolt Balanyi <zsolt....@gmail.com> > > >> >> wrote: > >> >> > Hi All! > >> >> > > >> >> > But what can I do when I want to use annotation, and I don't have > >> >> > access > >> >> > to > >> >> > the mapper? > >> >> > Eg: > >> >> > > >> >> > @JsonSerialize(using = ASerializer.class) > >> >> > public class AClass { > >> >> > ... > >> >> > } > >> >> > > >> >> > BR, Zsolt > >> >> > > >> >> > 2015. június 23., kedd 16:18:36 UTC+2 időpontban Tim Dudgeon a > >> >> > következőt > >> >> > írta: > >> >> >> > >> >> >> Hi, > >> >> >> > >> >> >> I'm writing a custom serialiizer, extending StdSerializer. > >> >> >> In the > >> >> >> public void serialize(MoleculeObject mo, JsonGenerator jg, > >> >> >> SerializerProvider sp) > >> >> >> method I need to be able to access the default json serialization > >> >> >> mechanism, but I don't see how to do this. > >> >> >> I can't call super.serialize() as its abstract, and using > >> >> >> JsonGenerator.writeObject() or > >> >> >> SerializerProvider.defaultSerializeValue() > >> >> >> end up calling my custom serialize() method and end up with stack > >> >> >> overflow. > >> >> >> > >> >> >> How should I be doing this? > >> >> >> > >> >> >> Tim > >> >> > > >> >> > -- > >> >> > You received this message because you are subscribed to the Google > >> >> > Groups > >> >> > "jackson-user" group. > >> >> > To unsubscribe from this group and stop receiving emails from it, > >> >> > send > >> >> > an > >> >> > email to jackson-user...@googlegroups.com. > >> >> > To post to this group, send email to jackso...@googlegroups.com. > >> >> > For more options, visit https://groups.google.com/d/optout. > >> > > >> > -- > >> > You received this message because you are subscribed to the Google > >> > Groups > >> > "jackson-user" group. > >> > To unsubscribe from this group and stop receiving emails from it, > send > >> > an > >> > email to jackson-user...@googlegroups.com. > >> > To post to this group, send email to jackso...@googlegroups.com. > >> > For more options, visit https://groups.google.com/d/optout. > > > > -- > > You received this message because you are subscribed to the Google > Groups > > "jackson-user" group. > > To unsubscribe from this group and stop receiving emails from it, send > an > > email to jackson-user...@googlegroups.com <javascript:>. > > To post to this group, send email to jackso...@googlegroups.com > <javascript:>. > > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "jackson-user" group. To unsubscribe from this group and stop receiving emails from it, send an email to jackson-user+unsubscr...@googlegroups.com. To post to this group, send email to jackson-user@googlegroups.com. For more options, visit https://groups.google.com/d/optout.