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

use*_*407 2 java xml jackson

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

Ken*_*man 5

有没有办法在没有为遗留类添加注释的情况下使用Jackson?

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

Person.class

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

    }
Run Code Online (Sandbox Code Playgroud)

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

}
Run Code Online (Sandbox Code Playgroud)

主要方法

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);
}
Run Code Online (Sandbox Code Playgroud)

产量

<Person xmlns="" username="Foo" lastName="Bar" address="This address is too long" age="20"></Person>
Run Code Online (Sandbox Code Playgroud)