Нераспознанное поле «Период» при десериализации XML-файла со свойством «Период»? - PullRequest
0 голосов
/ 08 мая 2019

У меня есть 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">

, в этом случае игнорировать не следует, но я неНе знаю, почему Джексону не удалось это отобразить.Кто-нибудь поможет?Большое спасибо!

...