【发布时间】:2021-01-06 05:03:44
【问题描述】:
我发现了很酷的 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 是一个数据类
data class CustomIntegration(val name: String)
对于 输入 CustomeIntegration("Integration A"),输出 将是
<CustomIntegration>
<name>
Integrartion A
</name>
</CustomIntegration>
问题是在反序列化为 XML 时如何将 CustomIntegration 更改为 integration?我想解决许多用例:
- 任何类的单一实现,所以
CoolIntegration、AwesomeIntegration都将转换为标签integration - 我不能只是将类
CustomIntegration重命名为integration,因为它几乎就像SOAP:envelope到 SOAP 集成中一样,所以在同一个标签中可以有不同的内容 - 理想情况下,我想编写尽可能少的代码,以简化它的维护
到目前为止,我发现的唯一解决方案是编写自定义反序列化程序,但这并不能完全解决我试图满足的所有非功能性需求。
【问题讨论】:
标签: kotlin deserialization xml-deserialization jackson-dataformat-xml