Java + Jackson + XML: сериализовать свойства объекта java как элементы XML с одинаковыми именами

У меня есть объект Java, и я хотел бы сериализовать его в XML с помощью библиотеки Jackson:

public class Point {
    private Integer x;
    private Integer y;
    //getters/setters
}

и я хотел бы сериализовать его в следующий формат:

<point>
    <property name="x" value="1" />
    <property name="y" value="1" />
</point>

вместо того, что я использую Jacskon:

<point>
    <x>1</x>
    <y>1</y>
</point>

Я не хочу изменять Point свойства или структуру объекта. Есть ли способ сериализовать объект Point в требуемый формат с помощью аннотаций Джексона или настраиваемого сериализатора? Если да, то как мне это сделать?

Я использую библиотеку Джексона:

public class Serializer {
    XmlMapper mapper = new XmlMapper();

    public void serialize(File file, Object object) throws IOException {
        mapper.writeValue(file, object);
    }

}

person Felix    schedule 28.07.2017    source источник
comment
Посмотрите здесь: stackoverflow.com/questions/26837401/   -  person Michal Foksa    schedule 29.07.2017
comment
@MichalFoksa Mixins решает другую проблему - я могу использовать аннотации с миксинами или без них, но проблема остается: как сериализовать в запрошенный формат.   -  person Felix    schedule 02.08.2017


Ответы (1)


Вам нужно пометить эти свойства как атрибуты следующим образом:

public class Point {

    @JacksonXmlProperty(isAttribute = true)
    private Integer x;
    @JacksonXmlProperty(isAttribute = true)
    private Integer y;
    //getters/setters
}
person Pytry    schedule 10.12.2019