Как сериализовать вложенный объект Java в качестве атрибута XML с Джексоном? - PullRequest
0 голосов
/ 04 июня 2018

Это вариант этого вопроса в StackOverflow , однако у меня есть случай, когда у меня есть json, который выглядит как

{
    "point": {
        "meta": {
            "x": "100",
            "y": "200",
            "z": "300"
        },
    }
}

И хотел бы XML, который выглядит как

<point x="100" y="100" z="100"/>

Однако сейчас у меня есть нечто, похожее на

<point>
    <meta x="100" y="200" z="300"/>
</point>

У меня есть класс PointMeta, который в основном является оберткой для атрибутов, есть ли способ сообщить Джексону, что я хочуэто рассматривать весь класс как совокупность атрибутов класса Point верхнего уровня?

Я также использую Lombok, чтобы избежать шаблонов, геттеры и сеттеры не проблема.

Я пробовал что-то вроде

@Data
class Point {
    @JacksonXmlProperty(isAttribute=true)
    private PointMeta meta;
}

@Data
class PointMeta {
    @JacksonXmlProperty(isAttribute=true)
    private String x;
    // And so on for y and z.
}

Однако Джексон игнорирует первую аннотацию в Точке class без предупреждений или ошибок.Я хочу сказать Джексону, что это поле должно быть атрибутами XML этого класса.

...