Jackson使用整数值对scala枚举进行反序列化



我正在尝试从整数值反序列化scala枚举。

object TestEnum extends Enumeration {
type TestEnum = Value
val None = Value(0)
val One = Value(1)
val Two = Value(2)
val Four = Value(4) // scalastyle:ignore
@JsonCreator
def forValue(value: Int): TestEnum = {
TestEnum.Value(value)
}
}
class TestEnum extends TypeReference[TestEnum.type]

当我尝试反序列化此字段时,它会抛出一个错误,如-Cannot deserialize value of typecom.example.TestEnum$from Integer value (tokenJsonToken.VALUE_NUMBER_INT)

我看到jackson文档建议在java中使用JsonCreator,但没有提到scala-enum。

我使用的是defaultScalaMapper,这里没有任何自定义。

我能够使用枚举在类中使用jsonCreator来解决它。如下-

class Example(testEnum: TestEnum) {
@JsonCreator
def this(testEnumNum: Int) = {
this(TestEnum.forValue(testEnumNum))
}
}

然而,我需要在每节课上都这样做,我希望能有更好的解决方案。

最新更新