2016-05-23 59 views
0

我有這樣的XML:如何解析xml元素爲原始類型?

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

和Java類

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

當我試着使用代碼來解析XML:

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

我得到的錯誤:無法反序列化實例java.lang.String out of START_OBJECT token

如何更正deserialize xml元素爲原始類型?

+0

也'XmlMapper XmlMapper =新XmlMapper()'沒有意義。它至少應該是'xmlMapper'(第一個字母小寫)和'xmlMapper.readValue(..)'。 – Timo

回答

1

編輯:你能否確認變量「cls」是Order.class?如果cls是String.class,我會得到您報告的錯誤,但這不是正確的方法,因爲您正在解析<命令>元素而不是<id_address_delivery>元素。

你有任何可能導致問題的定製配置嗎?也許狡猾的空白 - 嘗試完全刪除空白?

我的代碼...

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)); 
    } 
} 

產生

{ 「id_address_delivery」: 「4」}

+0

Radik,你是否重新運行你的代碼,因爲改變它使用Order.class而不是_cls_變量?錯誤信息似乎表明這是問題。 – haggisandchips