使用“ Period”属性反序列化xml文件时无法识别字段“ Period”吗?

时间:2019-05-08 19:05:11

标签: deserialization xml-deserialization jackson-databind

我有2个这样的班

@Data
@JsonDeserialize(builder = MPDBuilder.class)
@Builder(builderClassName = "MPDBuilder", toBuilder = true)
@JacksonXmlRootElement(namespace = NAMESPACE, localName = "MPD")
public class MPD {

    @JacksonXmlProperty(namespace = NAMESPACE, localName = "Period")
    @JacksonXmlElementWrapper(useWrapping = false)
    @Singular("withPeriod")
    private final List<Period> period;

    @JsonPOJOBuilder(withPrefix = "")
    public static class MPDBuilder {}

}

@Data
@JsonDeserialize(builder = PeriodBuilder.class)
@Builder(builderClassName = "PeriodBuilder", toBuilder = true)
public class Period {
    ....
    @JsonPOJOBuilder(withPrefix = "")
    public static class PeriodBuilder {}

}

我正在将MPD序列化为xml文件,然后他们将其反序列化。但是我反序列化失败:

Unrecognized field "Period" (class xxx.stream.dash.MPD$MPDBuilder), not marked as ignorable (23 known properties: "period", "maxSegmentDuration", "suggestedPresentationDelay", "withPeriod", "programInformation", "profiles", "maxSubsegmentDuration", "availabilityEndTime", "timeShiftBufferDepth", "mediaPresentationDuration", "availabilityStartTime", "location", "minimumUpdatePeriod", "type", "id", "publishTime", "withMetrics", "baseURL", "minBufferTime", "metrics", "withProgramInformation", "withBaseURL", "withLocation"])

我在序列化后检查了xml文件,该文件以句点有效

<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" profiles="urn:mpeg:dash:profile:isoff-live:2011" type="dynamic" availabilityStartTime="1970-01-12T13:46:45Z" publishTime="2019-05-08T18:48:40.792Z" minimumUpdatePeriod="PT0S" minBufferTime="PT2S">
    <Period id="0" start="PT0S">
在这种情况下,不应忽略

期,但我不知道为什么杰克逊无法映射此期。有人帮忙吗?非常感谢!

0 个答案:

没有答案