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