Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可以将多个子类型映射到同一个javaclass吗?_Java_Json_Jackson - Fatal编程技术网

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

可以将多个子类型映射到同一个javaclass吗?,java,json,jackson,Java,Json,Jackson,我尝试映射的Json如下所示: [{ "Id":"NumberType1", "Value":65 }, { "Id":"Image", "Value":"picture.jpg" }, { "Id":"NumberType2", "Value":88 }, { "Id":"NumberType3", "Value":22 }] 我在超级类详细信息中配置了如下子类型映射: 不幸的是,NumberType2和Numb

我尝试映射的Json如下所示:

[{  
    "Id":"NumberType1",
    "Value":65
},
{  
    "Id":"Image",
    "Value":"picture.jpg"
},
{  
    "Id":"NumberType2",
    "Value":88
},
{  
    "Id":"NumberType3",
    "Value":22
}]
我在超级类详细信息中配置了如下子类型映射:

不幸的是,NumberType2和NumberType3被映射到超类细节,而不是NumberType类,就好像上面的注释被忽略一样

博客评论表明这也许是它应该的样子。。但任何帮助都是值得的

可以将多个子类型映射到它在@JsonTypeInfo中设置为defaultImpl的类中工作的同一个java类吗

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

@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 {
}