我试图映射的Json看起来像这样:
[{
"Id":"NumberType1",
"Value":65
},
{
"Id":"Image",
"Value":"picture.jpg"
},
{
"Id":"NumberType2",
"Value":88
},
{
"Id":"NumberType3",
"Value":22
}]
我已经在超类Detail
中配置了这样的子类型映射:
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
property = "Id",
defaultImpl=Detail.class)
@JsonSubTypes({
@JsonSubTypes.Type(Image.class),
@JsonSubTypes.Type(value=NumberType.class, name="NumberType1"),
@JsonSubTypes.Type(value=NumberType.class, name="NumberType2"),
@JsonSubTypes.Type(value=NumberType.class, name="NumberType3")
})
public class Detail {
}
不幸的是NumberType2
和NumberType3
映射到超类Detail
而不是NumberType类(如上面的注释被忽略)
This博客评论表明这可能是应该如何......但任何帮助都是适当的。
可以将多个子类型映射到同一个java类(它适用于defaultImpl
中设置为@JsonTypeInfo
的类吗?
(我可以更改java代码,但不能更改json格式)