On Mon, Sep 24, 2018 at 12:06 PM Wayne Tech <[email protected]> wrote:
>
> Hi,
>
> I was trying to find a solution to let jackson to serialize without an extra 
> super type element.
>
> I have a class that has an instance of a super type
>
> A.java
> {
>     SuperType superType;
>     // other object definitions
> ...
> }
>
> I also define a list of sub types extending the SuperType like;
>
> @JsonTypeInfo( use  = JsonTypeInfo.Id.NAME, include = 
> JsonTypeInfo.As.WRAPPER_OBJECT )  // I tried PROPERTY, EXISTING_PROPERTY etc.
> @JsonSubTypes({
>     @JsonSubTypes.Type( name = "file", value = FileType.class ),
>     @JsonSubTypes.Type( name = "audio", value = AudioType.class )
> })
>
> public class SuperType
>
> Now, when I construct A.java, the variable superType is assigned to concrete 
> type such as FileType or AudioType on run-time. By default, the serialized 
> json output will be
> { "superType":{ "file":{... a list of file attribute } } } or {"superType" : 
> { "audio": { ... a list of audio attribute } } }
>
> I could change the type info definition to "EXISTING_PROPERTY", and I can get 
> the following output:
> {"superType":{ .. a list of file attribute} } or {"superType":{ .. a list of 
> audio attribute} }
>
>
> What I really want is:
> {"file": {  a list of file attribute } } or {"audio": { a list of audio 
> attribute} }
>
> The only difference is the out layer element ("superType") is removed.
>
> Note, I do not want additional type information or class information in the 
> output either.
>
> It looks like I could not get rid of the element superType. I tried to write 
> a custom serializer. However, it would have to be applied on the enclosing 
> class ( A.java), and not on SuperType itself. This means a complete custom 
> serialization by hand coding.
>
> Is there anyway to allow jackson to do it automatically.

No. Jackson uses the property name, `superType` as a key from JSON
element to property to map,
and there is no automated way of handling the case where that would be missing.

-+ 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 post to this group, send email to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to