将包含XML的列表反序列化为POJO

时间:2018-05-15 15:51:27

标签: java xml jackson jackson-dataformat-xml

我的XML看起来像这样:

<asset  id="35465146">
    <TOV artist="" music="0" episodeNumber="">
        <credit biography="" />
        <credit biography="" />
        <credit biography="" />
        <credit biography="" />
        <castCrew role="Actor" name="John C. Reilly"/>
        <castCrew role="Director" name="Keith Scholey"/>
        <castCrew role="Director" name="Alastair Fothergill"/>
        <castCrew role="Director" name="Adam Chapman"/>
    </TOV>
</asset>

我的资产POJO看起来像这样:

public class asset {
    @Getter @Setter private String id;
    @Getter @Setter private TOV TOV;
}

和TOV类看起来像这样:

public class TOV {
    @Getter @Setter private String episodeNumber;
    @Getter @Setter private String music;
    @Getter @Setter private String artist;
    @Getter @Setter private List<credit> credit;
    @Getter @Setter private List<castCrew> castCrew;

}

现在,我运行代码并获得一个空指针。 当我调试代码时,我看到已经创建了资产对象,并且已经从XML中提取了ID字段。但是,TOV对象等于null。我是否需要某种标签来告诉Jackson TOV java对象是否映射到XML?另外,在java List中有信用和castCrew吗?

1 个答案:

答案 0 :(得分:0)

在我缺少的资产类中

@JacksonXmlProperty(localName = "TOV")

之上
@Getter @Setter private TOV TOV;

对于列表我需要添加

@JacksonXmlElementWrapper(useWrapping = false)
@JacksonXmlProperty(localName = "castCrew")

这两个问题都与必须在XML中指定它应该映射到哪个字段

有关