Jackson 枚举将不需要的值反序列化为 "else" 值

Jackson enum deserialize unwanted values to an "else" value

我正在尝试将 XML 字符串反序列化为该枚举 class

enum class FishType {
    @JsonProperty("fish-trout") TROUT,
    @JsonProperty("fish-salmon") SALMON,
    @JsonProperty("fish-halibut") HALIBUT,
    ...
}

有很多类型,但我只对使用列出的前三种类型感兴趣。有没有办法将任何其他字符串反序列化为 FishType.ELSE 条目,而不是手动输入每个可能的字符串?

@JsonEnumDefaultValue 适用于 XML 至:

enum class FishType {
    @JsonProperty("fish-trout") TROUT,
    @JsonProperty("fish-salmon") SALMON,
    @JsonProperty("fish-halibut") HALIBUT,
    @JsonEnumDefaultValue ELSE
}

fun main() {
    val mapper = XmlMapper().apply {
        enable(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_USING_DEFAULT_VALUE)
    }
    println(mapper.readValue<FishType>("<FishType>fish-trout</FishType>")) //TROUT
    println(mapper.readValue<FishType>("<FishType>abc</FishType>")) //ELSE
}