我有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">
在这种情况下,不应忽略期,但我不知道为什么杰克逊无法映射此期。有人帮忙吗?非常感谢!