繁体   English   中英

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

[英]custom xml deserializer in jackson for enum

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

enum class VatRate {
    none,
    tax10,
    tax20
}

我不能修改这个 enum 我需要像这样从VatRate反序列化增值税率:

<testXml>
  <vat>vat10</vat>
</testXml>

我知道如何使用 jackson 创建和使用 mixin。 但是如何告诉 jackson 使用外部 function 进行反序列化?

如果您只想自己做:

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 这有帮助吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM