XML Jackson Mapping in List deserialisieren

OnDemand

Top Contributor
Moin zusammen,

hab mal wieder was mit XML am Hut und bin verwirrt.

Ich bekomme die einfach nicht eingelesen. Kann bitte jemand drüberschauen und mir einen Tipp geben? Ich bin auch immer verwirrt mit den Annotationen Jackson oder JsonProperty daher hab ich die mal weggelassen, hilft aber auch nix - Fehler bleibt. Mir fehlt da irgendwie ein umgebender Tag <Products> wo die einzelnen <Product> drin sind.

Cannot construct instance of Product (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('A4401685')

XML:
XML:
<?xml version="1.0" encoding="UTF-8"?>
<Xmessage>
    <product>
        <a001>A4401685</a001>
        <a002>03</a002>
        <productidentifier>
            <b221>01</b221>
            <b233>LI</b233>
            <b244>de</b244>
        </productidentifier>
        <productidentifier>
            <b221>01</b221>
            <b233>BESTNR</b233>
            <b244>df</b244>
        </productidentifier>
        <b246>01</b246>
        <b012>WW</b012>
        <containeditem>
            <productidentifier>
                <b221>01</b221>
                <b233>REC</b233>
                <b244>f</b244>
            </productidentifier>
    </product>
    <product>
        <a001>d</a001>
        <a002>03</a002>
        <productidentifier>
            <b221>01</b221>
            <b233>REC</b233>
            <b244>d</b244>
        </productidentifier>
        <productidentifier>
            <b221>01</b221>
            <b233>LIEFERANT</b233>
            <b244>V1-</b244>
        </productidentifier>
        <b012>BF</b012>
        <productclassification>
            <b274>02</b274>
            <b275>49019900</b275>
        </productclassification>
    </product>
</Xmessage>

Mein Code:
Java:
XmlMapper xmlMapper = new XmlMapper();
xmlMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
xmlMapper.enable(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);
Xmessage products = xmlMapper.readValue(file, Xmessage.class);

Java:
@Data
public class Xmessage {
    private List<Product> product = new ArrayList<Product>();
}

Java:
@Data
public class Product {
    String a001 = "";
    @JsonProperty("productidentifier")
    List<ProductIdentifier> productidentifierBeanList;
}
 

OnDemand

Top Contributor
Wie es scheint muss man über Lists

@JacksonXmlElementWrapper(useWrapping = false)

hinzufügen, wenn die "Unterobjekte" nicht in einem umschließenden <products> tag sind. useWrapping = false stellt wohl ein, dass alle <product> Objekte in die List gepackt werden sollen
 

Neue Themen


Oben