2016-05-23 14 views
0

Ich habe diese xml:Wie XML-Element zu primitiven Typen analysieren?

<order> 
    <id_address_delivery>4</id_address_delivery> 
</order> 

und Java-Klasse

@JacksonXmlRootElement(localName = "order") 
public static class Order 
{ 
    @JacksonXmlProperty(localName = "id_address_delivery") 
    public String id_address_delivery; 
} 

Wenn ich versuche, xml mit Code zu analysieren:

XmlMapper XmlMapper = new XmlMapper() 
XmlMapper.readValue(xml, Order.class); 

ich den Fehler bekommen: nicht Instanz deserialisieren Kann von java.lang.String aus START_OBJECT Token

Wie man das deserialize xml Element zum ursprünglichen Typ korrigiert?

+0

auch 'XmlMapper XmlMapper = new XmlMapper()' keinen Sinn macht. Es sollte mindestens 'xmlMapper' (erster Buchstabe Kleinbuchstaben) und' xmlMapper.readValue (..) 'sein. – Timo

Antwort

1

BEARBEITEN: Können Sie bestätigen, dass die Variable "cls" Order.class ist? Ich erhalte den Fehler, den Sie gemeldet haben, wenn cls String.class ist, aber das ist nicht der richtige Ansatz, da Sie die <-Anweisung > Element nicht die <id_address_delivery> Element analysieren.

Haben Sie eine maßgeschneiderte Konfiguration, die das Problem verursachen könnte? Vielleicht zwielichtige Leerzeichen - versuchen Sie, das Leerzeichen vollständig zu entfernen?

Mein Code ...

public class Jackson { 

    @JacksonXmlRootElement(localName = "order") 
    private static class Order 
    { 
     @JacksonXmlProperty(localName = "id_address_delivery") 
     public String id_address_delivery; 
    } 

    public static void main(String[] args) throws IOException { 

     XmlMapper mapper = new XmlMapper(); 
     Order order = mapper.readValue("<order>\n\t<id_address_delivery>4</id_address_delivery></order>", Order.class); 

     System.out.println(ToStringBuilder.reflectionToString(order, ToStringStyle.JSON_STYLE)); 
    } 
} 

produziert

{ "id_address_delivery": "4"}

+0

Radik, haben Sie Ihren Code erneut ausgeführt, seit er geändert wurde, um Order.class statt der Variable _cls_ zu verwenden? Die Fehlermeldung scheint anzuzeigen, dass das Problem besteht. – haggisandchips

Verwandte Themen