XML deserialization to POJO using Jackson XmlMapper

后端 未结 1 1757
囚心锁ツ
囚心锁ツ 2020-12-14 01:34

Using Jackson XmlMapper annotations, how would I deserialize this XML into a pojo?



   

        
相关标签:
1条回答
  • 2020-12-14 02:34

    Your POJO classes do not fit to your XML. The structure is simpler than you thought. See below example:

    @JacksonXmlRootElement(localName = "open")
    class OpenCredentials {
    
        @JacksonXmlProperty(localName = "creds")
        @JacksonXmlElementWrapper(useWrapping = false)
        private Credentials[] credentials;
    
        //getters, setters, toString
    }
    
    
    class Credentials {
    
        @JacksonXmlProperty(isAttribute = true)
        private String priv;
    
        @JacksonXmlProperty(isAttribute = true)
        private String type;
    
        private String user;
    
        @JacksonXmlProperty(localName = "client_token")
        private String clientToken;
    
        @JacksonXmlProperty(localName = "client_secret")
        private String clientSecret;
    
        //getters, setters, toString
    }
    

    Simple usage:

    XmlMapper mapper = new XmlMapper();
    OpenCredentials openCredentials = mapper.readValue(XML, OpenCredentials.class);
    System.out.println(openCredentials);
    

    Above program prints (for your XML):

    OpenCredentials{credentials=[Credentials{priv='write', type='internal', user='Username1', client_token='abcplaudzrbcy37c', client_secret='0cxDE3LE0000='}, Credentials{priv='read', type='internal', user='Username1', client_token='123plaudzrbcy37c', client_secret='0cxDE3LE1234='}, Credentials{priv='none', type='internal', user='Username1', client_token='000plaudzrbcy37c', client_secret='0cxDE3LEabcd='}]}
    

    See also:

    1. jackson-dataformat-xml.
    2. Home: Jackson XML databind Wiki.
    0 讨论(0)
提交回复
热议问题