On Sun, Apr 15, 2018 at 9:53 AM, Marcel Overdijk <[email protected]> wrote:
> Hi,
>
> Is it possible to provide (request-based) context to a custom
> `JsonSerializer`? Like a `fieldsets` request param to remove some fields
> from the generated json?
>
> Or is the best option to bind the needed context to a `ThreadLocal`?
>
>
> Basically when calling objectMapper.writeValueAsString(document) in a custom
> serializer I want to change the json data based on a particular context
> which is not part of the provided document.
Yes, there are "context attributes" that were added to reduce/remove
need for passing things using ThreadLocals.
You can specify baseline attributes via ObjectMapper, but usually
they are set on ObjectReader and ObjectWriter
which are light-weight reconfigurable entities constructed from
ObjectMapper (configuration of which may not be
changed on per-call basis).
So, something like:
ObjectWriter w = mapper.writer() // or, `writerFor(type)` to cache
lookup for serializer
.withAttribute("key", value);
w.writeValue(new File("foo.json"), thingToSerialize);
Serialize can then call `provider.getAttribute("key")` to locate active value.
I hope this helps,
-+ Tatu +-
--
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 [email protected].
To post to this group, send email to [email protected].
For more options, visit https://groups.google.com/d/optout.