简体   繁体   English

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

[英]custom xml deserializer in jackson for enum

I'm have a lib's enum look like this:我有一个 lib 的枚举,如下所示:

enum class VatRate {
    none,
    tax10,
    tax20
}

I can't modify this enum .我不能修改这个 enum And I need to deserialize VatRate from xml like this:我需要像这样从VatRate反序列化增值税率:

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

I know how to create and use mixins with jackson.我知道如何使用 jackson 创建和使用 mixin。 But how to tell jackson to use external function for deserialisation?但是如何告诉 jackson 使用外部 function 进行反序列化?

If you just want to do it on your own:如果您只想自己做:

fun stringToVat(value: String): VatId { return VatId.valueOf(value) }

An easier way would be to define your expected DTO and let jackson do the unmarshalling:一种更简单的方法是定义您预期的 DTO 并让 jackson 进行解组:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "testXml")
data class TestXml(
    @field:XmlElement(required = true)
    var vat: VatRate? = null
)

Edit : You can register your own custom Enum Serializer/Deserializer .编辑:您可以注册自己的自定义Enum Serializer/Deserializer Does this help?这有帮助吗?

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

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