我正在尝试从整数值反序列化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 type
com.example.TestEnum$from Integer value (token
JsonToken.VALUE_NUMBER_INT)
我看到jackson文档建议在java中使用JsonCreator,但没有提到scala-enum。
我使用的是defaultScalaMapper,这里没有任何自定义。
我能够使用枚举在类中使用jsonCreator来解决它。如下-
class Example(testEnum: TestEnum) {
@JsonCreator
def this(testEnumNum: Int) = {
this(TestEnum.forValue(testEnumNum))
}
}
然而,我需要在每节课上都这样做,我希望能有更好的解决方案。