On Mon, Jul 18, 2022 at 4:47 AM Nicolas Labrot <[email protected]> wrote:
>
> I think for the moment I will try to create a custom serializer / 
> deserializer for my properties map
> - Serializer: introspect the map and build JavaType then call the appropriate 
> serialize
> - Deserializer: convert first into a TreeNode and then introspect the 
> TreeNode (basically, if map and @type then try to create the associated 
> deserializer)
>

Ok so:

1. No, I don't think there is a way to make Polymorphic handling work
with "Any" properties with `Object` as value
2. But if you just have `Map<String,Object>`, you SHOULD be able to
simply use `@JsonTypeInfo` annotation on Map property (field or
accessor)

So I would first try (2), I think.

It _might_ just work with `@JsonValue` as well, if you needed
"JsonAnySetter/Getter"-like behavior.

-+ Tatu +-

>
> On Mon, 18 Jul 2022 at 12:02, [email protected] <[email protected]> wrote:
>>
>> Hello,
>>
>> I hope my question will not be another "why doesn't Jackson find polymorphic 
>> type for my Map values (or List or Set)" and  I hope I did my best to check 
>> for any question/answer :).
>>
>> I have a bean with an any field:
>> @JsonAnyGetter
>> @JsonAnySetter
>> protected Map<String, Object> properties = new HashMap<>();
>>
>> When initializing the map with:
>> properties.put("foo", new FooBean());
>> properties.put("foos", List.of(new FooBean()));
>> properties.put("long", 123);
>> properties.put("longs", List.of(123));
>> properties.put("longss", List.of(List.of(123)));
>>
>> I want to produce:
>> {
>> "foo": {
>> "@class": "org.FooBean", "foo": "bar"
>> },
>> "foos": [
>> {
>> "@class": "org.FooBean", "foo": "bar"
>> }
>> ],
>> "long": 123,
>> "longs": [123, 567],
>> "longss": [[123], 567]
>> }
>>
>> ie. a type for bean but not for primitive or collection/map.
>>
>> Is this use case achievable by using jackson? To quote that post  if there'd 
>> be an option that says, if there is a type attribute at the beginning, 
>> create this type, rather than a natural one.
>>
>> Thanks for your help
>>
>> Nicolas
>>
>>
>>
>> --
>> You received this message because you are subscribed to a topic in the 
>> Google Groups "jackson-user" group.
>> To unsubscribe from this topic, visit 
>> https://groups.google.com/d/topic/jackson-user/abEAvuiMeac/unsubscribe.
>> To unsubscribe from this group and all its topics, send an email to 
>> [email protected].
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/jackson-user/f62bae35-a14e-4f9f-b152-6bfcf2e83873n%40googlegroups.com.
>
> --
> 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 view this discussion on the web visit 
> https://groups.google.com/d/msgid/jackson-user/CAEWXQ0oD_Xb%2B9pve35uzmsTWgvfMqT%2BDzaDNSb7kHROyPpQCgw%40mail.gmail.com.

-- 
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 view this discussion on the web visit 
https://groups.google.com/d/msgid/jackson-user/CAGrxA24yUGk%3DEHRUUJKqjN8Nf%2B1kedrim79TuJd7yDHhpVBAJA%40mail.gmail.com.

Reply via email to