0

I have a problem with Jackson to serialize nested object.

@Data
@AllArgsConstructor
@NoArgsConstructor
@JacksonXmlRootElement(localName = "A")
public class A {
    @JacksonXmlProperty(isAttribute = true)
    private String Iee;

    @JacksonXmlProperty(localName = "B")
    private B b;
}

@Data
@AllArgsConstructor
@JacksonXmlRootElement(localName = "B")
public class B {
    @JacksonXmlProperty(isAttribute = true)
    private String Jee;
}

When i serialize the Object A created like that :

final B b = new B("attribute B value");
final A a = new A("attribute A value", b);
final XmlMapper xmlMapper = new XmlMapper();
final String xml = xmlMapper.writeValueAsString(a);

I want this result :

<A Iee="attribute A value">
    <B Jee="attribute B value" />
</A>

But i got this :

<A Iee="attribute A value">
    <B Jee="attribute B value">
        <Jee>attribute B value</Jee>
    </B>
</A>

I search but i didn't found anything about that on google. Any idea ?

Best regards,

2 Answers2

2

i found the error.

@Data
@AllArgsConstructor
@JacksonXmlRootElement(localName = "B")
public class B {
    @JacksonXmlProperty(isAttribute = true)
    private String jee;
}

When Jee begin by a caps, it doesn't work. When jee begin by a lower case, it works.

1

It is working with javafollowing maven's dependencies:

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.12</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.dataformat</groupId>
            <artifactId>jackson-dataformat-xml</artifactId>
            <version>2.11.0</version>
        </dependency>