可以将多个子类型映射到同一个javaclass吗?

时间:2015-04-28 11:00:42

标签: java json jackson

我试图映射的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 {
}

不幸的是NumberType2NumberType3映射到超类Detail而不是NumberType类(如上面的注释被忽略)

This博客评论表明这可能是应该如何......但任何帮助都是适当的。

可以将多个子类型映射到同一个java类(它适用于defaultImpl中设置为@JsonTypeInfo的类吗?

(我可以更改java代码,但不能更改json格式)

0 个答案:

没有答案