java - jackson 中用于枚举的自定义xml解串器

标签 java xml kotlin jackson

我有一个lib的枚举,如下所示:

enum class VatRate {
    none,
    tax10,
    tax20
}
我无法修改此枚举。我需要像这样从xml反序列化VatRate:
<testXml>
  <vat>vat10</vat>
</testXml>
我知道如何使用jackson创建和使用mixins。但是如何告诉 jackson 使用外部功能进行反序列化呢?

最佳答案

如果您只想自己做:

fun stringToVat(value: String): VatId { return VatId.valueOf(value) }
一种更简单的方法是定义您期望的DTO,然后让 jackson 进行编码:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "testXml")
data class TestXml(
    @field:XmlElement(required = true)
    var vat: VatRate? = null
)
编辑:您可以注册自己的自定义Enum Serializer/Deserializer。这有帮助吗?

关于java - jackson 中用于枚举的自定义xml解串器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62738568/

相关文章:

android - 如何用kotlin实现分页

android - 如何在 Android 上使用 Kotlin 将 FrameLayout 替换为 fragment

java - 如何使用MongoTemplate按顺序获取结果?

java - Java中字符串索引越界

java - 多个线程同时写入一个集合

java - 部署maven项目时出现依赖异常

java - 在java中解码时出错

xml - 在 xml 元素中保存 Url

xml - XSD if-else 条件

android - fragment 之间的滚动效果实际上不允许用户滚动?