Java – polymorphic deserialization of JSON using Jackson, and the property type becomes “null”

I'm using Jackson to convert a large JSON string into categories and subclasses

I have a list of objects. Each object contains a node object, a final result object and a sub array The children array contains a list of objects with exactly the same settings This lasts 3 or 4 layers

The nodes of each layer are different subclasses, which are extended from the node superclass I annotated the superclass node with the following comments:

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME,include = JsonTypeInfo.As.PROPERTY,property = "type")
@JsonSubTypes({
    @JsonSubTypes.Type(value = Type1ResponseDto.class,name = "Type1"),@JsonSubTypes.Type(value = Type2ResponseDto.class,name = "Type2"),@JsonSubTypes.Type(value = Type3ResponseDto.class,name = "Type3"),@JsonSubTypes.Type(value = Type4ResponseDto.class,name = "Type4"),@JsonSubTypes.Type(value = Type5ResponseDto.class,name = "Type5")
})

This seems to work because all subclasses are mapped

However, this will cause the "type" attribute to be set to null in some way

Why do you think so?

Solution

I need to add visible = true for the type attribute to be displayed:

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME,include = JsonTypeInfo.As.EXISTING_PROPERTY,property = "type",visible = true)
@JsonSubTypes({
    @JsonSubTypes.Type(value = Type1ResponseDto.class,name =  "Type1"),name = "Type4")
})
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>