在 Kotlin 中重命名 类 Jackson XML 序列化?

Renaming classes Jackson XML serialization in Kotlin?

我发现很酷的 Jackson XML 图书馆:

<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-xml</artifactId>
    <version>2.8.10</version>
    <type>bundle</type>
</dependency>

无需额外配置即可工作:

val xmlMapper = XmlMapper()
xmlMapper.enable(SerializationFeature.INDENT_OUTPUT);
xmlMapper.writeValueAsString(CustomIntegration)

其中CustomIntegration是一个数据class

data class CustomIntegration(val name: String)

对于输入 CustomeIntegration("Integration A")输出将是

<CustomIntegration>
    <name>
        Integrartion A
    </name>
</CustomIntegration>

问题是如何在反序列化为XML时将CustomIntegration更改为integration?我想解决许多用例:

到目前为止我找到的唯一解决方案是编写自定义反序列化器,但这并不能完全解决我试图满足的所有非功能性需求。

我在another SO post.

中找到的解决方案

为了更改XML中的根元素名称,您需要添加@JsonRootName(value = "integration")注释。

@JsonRootName(value = "integration")
data class CustomIntegration(val name: String)

输出 将是:

<integration>
    <name>
        Integrartion A
    </name>
</integration>