By quick look, would it not work if you declared type of delegated thing as
`RadiusAvp`, not Object?

And if serialization needed, adding `@JsonValue` on that RadiusAvp field.

-+ Tatu +-


On Tue, Nov 12, 2019 at 9:52 PM Guido Rost <[email protected]> wrote:

> Hi Tatu,
> here is a little runnable file which shows my problem. I can make it work
> the delegation to the JsonCreator (commented out in SetDeviseId) but I was
> hoping to avoid this.
> Hopefully you can point me to what I am missing or doing wrong. Thanks so
> much.
>
> import com.fasterxml.jackson.annotation.*;
> import com.fasterxml.jackson.databind.ObjectMapper;
>
> import java.util.List;
>
> public class MyProblem {
>
>     ObjectMapper mapper;
>
>     @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = 
> JsonTypeInfo.As.WRAPPER_ARRAY, property = "name")
>     @JsonTypeName("radius-avp")
>     static public class RadiusAvp {
>         public String attribute;
>
>         public RadiusAvp() {
>         }
>
>         public RadiusAvp(String attribute) {
>             this.attribute = attribute;
>         }
>
>         public String toString() {
>             return "radius-avp = " + attribute;
>         }
>     }
>
>     @JsonTypeName("transform-rule")
>     static public class TransformRule {
>
>         public TransformRule() {
>         }
>
>         @JsonProperty("actions")
>         public List<SetDeviceId> actions;
>
>         public String toString() {
>             return "Transform-rule: " + actions.toString();
>         }
>     }
>
>
>     @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = 
> JsonTypeInfo.As.WRAPPER_ARRAY, property = "name")
>     @JsonTypeName("set-device-id")
>     static public class SetDeviceId  {
>
>         public RadiusAvp radiusAvp;
>
>         public SetDeviceId() {
>         }
>
> //         Uncomment this section to make this work (but we don't like this)
> //
> //        @JsonCreator
> //        public SetDeviceId(Object object) {
> //            ObjectMapper mapper = new ObjectMapper();
> //            radiusAvp = mapper.convertValue(object, RadiusAvp.class);
> //        }
>
>         public String toString() {
>             return "set-device-id: " + radiusAvp.toString();
>         }
>     }
>
>
>     public static void main(String[] args) throws Exception {
>         String json = 
> "{\"actions\":[[\"set-device-id\",[\"radius-avp\",\"nas-identifier\"]]]}";
>
>         ObjectMapper mapper = new ObjectMapper();
>         TransformRule transformRule = mapper.readValue(json, 
> TransformRule.class);
>         System.out.println(transformRule.toString());
>     }
> }
>
>
> On Tuesday, November 12, 2019 at 3:11:30 PM UTC-8, Tatu Saloranta wrote:
>>
>> On Mon, Nov 11, 2019 at 7:13 PM Guido Rost <[email protected]> wrote:
>> >
>> >
>> > I just posted the upper level class which contains the actions.
>> > The target type is SetDeviceId which contains a field of type
>> RadiusAvp. The construction of that is the actual problem
>>
>> Yes, please do tell me what I really need.
>>
>> -+ 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 view this discussion on the web visit
>> https://groups.google.com/d/msgid/jackson-user/e88ec00a-e3f1-453f-8eaf-f3fd83cf8422%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/35ebdc5e-8084-4347-8280-06bd42127877%40googlegroups.com
> <https://groups.google.com/d/msgid/jackson-user/35ebdc5e-8084-4347-8280-06bd42127877%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
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/CAGrxA24S2jLPZKkQwcd4H1JhhEn5ptH28fLCUXeyNR8F1G7sMw%40mail.gmail.com.

Reply via email to