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.
