【问题标题】:@JsonValue annotation in Kotlin's enum class' value propertyKotlin 枚举类的值属性中的 @JsonValue 注释
【发布时间】:2017-11-03 15:46:39
【问题描述】:

我无法在枚举类的 value 参数上应用 Jackson 的 @JsonValue 注释:

enum class CancellationReason(@JsonValue val code: String) {
    CUSTOMER_RESIGNED("20"),
    ERRORS_IN_FOO("21"),
    ERRORS_IN_BAR("24");
}

错误消息指出:This annotation in not applicable to target 'value parameter'。有什么问题?

【问题讨论】:

    标签: jackson kotlin


    【解决方案1】:

    您可以将jackson-module-kotlin升级到2.9.0版本,错误就会消失,因为@JsonValue注解在该版本中获得了目标FIELD

    或者,通过添加@get: 来指定annotation use-site target 来解决此问题:

    enum class CancellationReason(@get:JsonValue val code: String) {
        CUSTOMER_RESIGNED("20"),
        ERRORS_IN_FOO("21"),
        ERRORS_IN_BAR("24");
    }
    

    【讨论】:

      【解决方案2】:

      根据这个document,您可以通过使用@JsonValue 或@JsonFormat 注释枚举属性(如果您使用杰克逊库版本

      enum class Event(@JsonFormat(shape = JsonFormat.Shape.OBJECT) val event: String) {
          START("start"),
          END("end"),
          RESCHEDULE("rescheduled")
      }
      

      【讨论】:

        猜你喜欢
        • 2019-03-08
        • 1970-01-01
        • 1970-01-01
        • 2020-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多