使用Jackson在没有注释的情况下使用属性序列化xml

时间:2014-11-10 05:36:21

标签: java xml jackson

我目前正在使用Jackson编写一些代码来将旧版POJO序列化为XML,但我需要使用属性而不是子元素来序列化它们。有没有办法使用Jackson而不在遗留类中添加注释?

1 个答案:

答案 0 :(得分:5)

  

有没有办法使用Jackson而不在遗留类中添加注释?

您可以尝试在jackson中使用Mix-in注释。通过这种方式,您可以保留旧版课程,同时享受注释功能。这是如何做。

<强> Person.class

   class Person {
        private String username;
        private String lastName;
        private String address;
        private Integer age;
        //getters and setters 

    }

<强> Mixin.class

abstract class Mixin{
@JacksonXmlProperty(isAttribute = true)
    abstract String getUsername();

    @JacksonXmlProperty(isAttribute = true)
    abstract String getLastName();

    @JacksonXmlProperty(isAttribute = true)
    abstract String getAddress();

    @JacksonXmlProperty(isAttribute = true)
    abstract String getAge();

}

主要方法

public static void main(String[] args) throws JsonProcessingException {
    Person p = new Person("Foo","Bar");
    p.setAddress("This address is too long");
    p.setAge(20);

    ObjectMapper xmlMapper = new XmlMapper();

    xmlMapper.addMixInAnnotations(Person.class, MixIn.class);
    String xml = xmlMapper.writeValueAsString(p);
    System.out.println(xml);
}

<强>输出

<Person xmlns="" username="Foo" lastName="Bar" address="This address is too long" age="20"></Person>