No String-argument constructor/factory method to deserialize from String value with jackson XML?

Viewed 44

I have the following XML

<?xml version="1.0" encoding="utf-8"?>
<MPD
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="urn:mpeg:dash:schema:mpd:2011"
  xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 http://standards.iso.org/ittf/PubliclyAvailableStandards/MPEG-DASH_schema_files/DASH-MPD.xsd"
  type="dynamic"

<Period
id="1"
start="PT0S">
    <BaseURL>dash/</BaseURL>
    <EventStream
  schemeIdUri="urn:scte:scte35:2014:xml+bin"
  timescale="1000">
        <!-- 2022-09-07T09:44:32.640000Z -->
        <Event
    presentationTime="1662543872640"
    duration="19200"
    id="49282">
            <Signal
                xmlns="http://www.scte.org/schemas/35/2016">
                <Binary>/DAhAAAAAAAAAP/wEAUAAMCCf+9//gAaXgDAAAAAAADkYSQC</Binary>
            </Signal>
        </Event>
    </EventStream>
</Period>
</MPD>

I am using XmlMapper to parse it These are my model class

The root MPD

@JacksonXmlRootElement(
    localName = "MPD",
    namespace = "urn:mpeg:dash:schema:mpd:2011"
  )
public class MPD {

@JacksonXmlProperty(
        localName = "BaseURL",
        namespace = "urn:mpeg:dash:schema:mpd:2011"
)
private final List<BaseURL> baseURLs;
@JacksonXmlProperty(
        localName = "Period",
        namespace = "urn:mpeg:dash:schema:mpd:2011"
)
private final List<Period> periods;
 }

The Period model

public class Period {
@JacksonXmlProperty(
        localName = "BaseURL"
)
private final List<BaseURL> baseURLs;
@JacksonXmlProperty(
        localName = "EventStream",
        namespace = "urn:mpeg:dash:schema:mpd:2011"
)
private final List<EventStream> eventStreams;
}

The BaseURL model

public class BaseURL {
@JacksonXmlText
private final String value;
}

Using jackson mapper as

XMLInputFactory inputF = XMLInputFactory.newFactory();
        XmlMapper xmlMapper = new XmlMapper(inputF);
        xmlMapper.registerModule(new JavaTimeModule());
        MPD dashManifest = xmlMapper.readValue(manifest, MPD.class);

I am getting the error

om.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `com.model.dashplaylist.Period` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('dash/')
 at [Source: (StringReader); line: 16, column: 19] (through reference chain: com.model.dashplaylist.MPD["Period"]->java.util.ArrayList[0])
0 Answers
Related