Thanks again for such a detailed advice! I sincerely appreciate the effort. 
Very helpful!

On Tuesday, December 26, 2017 at 10:02:21 PM UTC+1, Tatu Saloranta wrote:
>
> On Mon, Dec 25, 2017 at 12:16 PM, Bojan Tomic <[email protected] 
> <javascript:>> wrote: 
> > The subject line is pretty much the whole question: can ObjectMapper be 
> > accessed from JsonDeserializer#deserialize in any way at all? 
>
> There is, although it's bit obscure and for a good reason: you should 
> not do that, at all (*), 
> if possible. And generally it is possible. 
>
> If you do want to do it, nonetheless, the route is via `JsonParser` 
> and method `getCodec()`, 
> which can be case as `ObjectMapper`, safely. But as per above, it's 
> the last resort if everything else fails. 
>
> > If it is absolutely out of the question (and only in that case), is it 
> > possible to achieve an equivalent of: ObjectMapper#readValue(String, 
> > JavaType) using JsonParser and/or DeserializationContext? How about 
> > ObjectMapper#convertValue(Object, JavaType)? 
>
> The way deserializers are designed to work is to use delegation to 
> other deserializers. 
> Access to these is via `DeserializationContext`: either during 
> initialization (usually method `createContextual()` 
> when deserializer implements `ContextualDeserializer`), or at runtime, 
> during `deserialize()` call. 
> Former is significantly more efficient as access is only done once 
> during construction: but it may not matter 
> a lot in specific cases. 
>
> Either way, method to use varies depending on details, there are 
> multiple `findXxxDeserializer()` calls: but if 
> you have no special configurations or customizations to worry about, 
> `findContextualValueDeserializer` is probably 
> the best (from `createContextual()` directly, or if you have stored 
> ref to BeanProperty, during runtime). 
> Another possibility is just using `findRootValueDeserializer()`, which 
> only requires type and as such is easier to 
> call from `deserialize()` directly. 
>
> I hope this helps, 
>
> -+ Tatu +- 
>
> (*) Why not do that? `ObjectMapper` has no context of currently active 
> deserialization, like Attributes set, or 
> even some of configuration. It has to create such context, adding 
> overhead and possibly losing information you need. 
> This may or may not be problematic for custom types (or non-structured 
> standard types like `String`, numbers). 
> So you are basically missing the active `DeserializationContext` and 
> that can have side effects. 
>

-- 
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.

Reply via email to