У меня есть 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">
, в этом случае игнорировать не следует, но я неНе знаю, почему Джексону не удалось это отобразить.Кто-нибудь поможет?Большое спасибо!