我有一个问题与序列化枚举。我希望反序列化只对枚举中指定的值(01,02,03)有效,而不对序号有效。这可能会很令人困惑,如下面的例子所示。是否有一些选项或配置?我在spring使用Jackson,我第一次注意到这个行为是在3.1.x版本中。
代码示例:
fun main(args: Array<String>) {
val objectMapper = ObjectMapper().registerKotlinModule()
println(objectMapper.readValue("{ \"value\": \"01\" }}", TestClass::class.java))
println(objectMapper.readValue("{ \"value\": \"1\" }}", TestClass::class.java)) //this should fail
}
data class TestClass(val value: TestEnum)
enum class TestEnum(@JsonValue val value: String) {
FIRST("01"),
SECOND("02"),
THIRD("03")
}
输出量:
TestClass(value=FIRST)
TestClass(value=SECOND)
使用的依赖项:
implementation "com.fasterxml.jackson.core:jackson-core:2.15.2"
implementation 'com.fasterxml.jackson.module:jackson-module-kotlin:2.15.2'
1条答案
按热度按时间g2ieeal71#
配置选项:
解决了这个问题。