On Tue, Jul 19, 2022 at 12:44 PM nit...@gmail.com <nith...@gmail.com> wrote:
>
> Thanks for your answer.
>
> Without the any setter/getter but with JsonTypeInfo on the map field, the 
> @class are added to every entries at the exclusion of the java types mappable 
> into json (so Long at its @class). But List<Integer> still have its @class.
> Without the any setter/getter, without JsonTypeInfo on the map field but with 
> JsonTypeInfo on all the pojo classes that can be inserted into the map,  the 
> @class are only added to those entries but at the deserialization the entry 
> having @class are not recovered but transformed into a map

Ok, I am sure I follow the details here, but sounds like this does not
work the way you would like it to work.

And wrt generic container types (that is, `List<X>`), no type
information is available thanks to type erasure, that is true.

> I end up writing my own serializer / deserializer :)
> https://gist.github.com/nithril/b55d6ab32db253dfe24995f87c899685

Ok, sometimes that's what you got to do. Good luck!

-+ Tatu +-

>
>
> Le lundi 18 juillet 2022 à 19:23:17 UTC+2, tsalo...@gmail.com a écrit :
>>
>> On Mon, Jul 18, 2022 at 4:47 AM Nicolas Labrot <nit...@gmail.com> 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, nit...@gmail.com <nit...@gmail.com> 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 
>> >> jackson-user...@googlegroups.com.
>> >> 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 jackson-user...@googlegroups.com.
>> > 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 jackson-user+unsubscr...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/jackson-user/656951e7-25c1-4446-be91-faa56fb615fdn%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 jackson-user+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jackson-user/CAL4a10gn%2B9rEk-YVH%2Bv6Atp-G2rj69b8a_AAwN48hGsQLz4j7Q%40mail.gmail.com.

Reply via email to