0

我对 Jackson 序列化嵌套对象有疑问。

@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;
}

当我序列化这样创建的对象 A 时:

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

我想要这个结果:

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

但我得到了这个:

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

我搜索但我没有在谷歌上找到任何关于此的内容。任何想法 ?

此致,

4

2 回答 2

1

它正在使用 javafollowing maven 的依赖项:

        <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>
于 2020-05-18T08:47:05.337 回答
1

我发现了错误。

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

当 Jee 从大写开始时,它不起作用。当 jee 以小写字母开头时,它可以工作。

于 2020-05-18T09:14:31.813 回答