http://stackoverflow.com/questions/31056215/how-to-access-default-jackson-serialization-in-a-custom-serializer
2017. március 21., kedd 9:16:17 UTC+1 időpontban Zsolt Balanyi a következőt írta: > > This article points out exactly the fact, that the usage of > BeanSerializerModifier makes in unnecessary to use the annotation! > So I would happily contribute to make the @JsonSerialize smarter. :) > > BR, Zsolt > > 2017. március 21., kedd 8:25:51 UTC+1 időpontban Zsolt Balanyi a > következőt írta: >> >> 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> >>> 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. >>> > 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+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.