【问题标题】:Jackson Deserialize scala enum with integer value杰克逊用整数值反序列化scala枚举
【发布时间】:2021-09-10 14:05:28
【问题描述】:

我正在尝试从整数值反序列化 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 (tokenJsonToken.VALUE_NUMBER_INT)

我看到 jackson doc 建议在 java 中使用 JsonCreator,但是没有提到 scala 枚举。

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

【问题讨论】:

    标签: scala serialization jackson


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-10
      • 1970-01-01
      • 1970-01-01
      • 2016-06-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多