当前位置: 首页 > 知识库问答 >
问题:

kotlin:无法用Jackson解析到枚举的字符串

詹甫
2023-03-14

我使用lib jackson-module-kotlin将json字符串解析为对象。

我的问题是,当我将字符串解析为枚举时,当我使用intellij启动时,我有以下堆栈跟踪:

我该怎么办?

 enum class CType { DEAL, FILE }
 data class Code(val code: String, val type: CType)

 fun testDeserialization() {
    val mapper = jacksonObjectMapper()
    // following line throws an exception:
    mapper.readValue("""{"code":"A","type":"DEAL"}""", Code::class.java)
 }

共有1个答案

侯兴为
2023-03-14

我让它工作的唯一方法是添加额外的@jvmstatic注释。我有mapper.registermodule(new KotlinModule());,除了以下内容以外,什么都不起作用:

package nc.features.algo.model

import com.fasterxml.jackson.annotation.JsonCreator
import com.fasterxml.jackson.annotation.JsonValue

enum class LHStatus (
  @get:JsonValue val code: Int
) {
  LH_POS_OVU_WAITING(1),
  LH_NEG_OVU_WAITING(2),
  ;

  companion object {
    @JsonCreator
    @JvmStatic
    fun deser(code: Int?): LHStatus? {
      if (code == null) return null
      for (i in values()) {
         if (i.code == code) return i
      }
      return null
    }
  }
}

 类似资料:
  • 我有一个类似的枚举: json文件本身有private字段,所以我需要private(它是java键盘)来进行序列化和映射,但是如果我使用private和所有小写,这将是一个运行时错误。我使用了上面代码中的@JSONProperty,但仍然不起作用。 进程已完成,退出代码为0

  • 我试图构建一个通用方法,它将作为参数并处理一些信息。 但不幸的是,它不能像我希望的那样工作。也许你有一些建议来改进我的代码并防止错误。 我在调用: 无法在 我在和调用: 无法解析方法 无法解析方法 我需要在方法中使用的枚举都具有相同的结构。 例如,其中一个看起来像这样: 我知道我可以通过使用 但我的方法不会是通用的。我想对我的任何枚举使用此方法。

  • 问题:给定一个整数数组,返回两个数字的索引,使它们相加到一个特定的目标。 您可以假设每个输入都有一个精确的解决方案,并且您可以不使用相同的元素两次。 例子: 给定nums=[2,7,11,15],target=9, 因为Nums[0]Nums[1]=2 7=9,返回[0,1]。 使用for循环后,我无法理解这些步骤。我是Python新手,请有人帮助我。

  • 例如,我如何做类似的事情: 结果示例:

  • 主要内容:使用枚举常量枚举类最基本的用法是实现一个类型安全的枚举。 枚举常量用逗号分隔,每个枚举常量都是一个对象。 枚举初始化 每一个枚举都是枚举类的实例,它们可以被初始化: 默认名称为枚举字符名,值从0开始。若需要指定值,则可以使用其构造函数: 枚举还支持以声明自己的匿名类及相应的方法、以及覆盖基类的方法。如: 如果枚举类定义任何成员,要使用分号将成员定义中的枚举常量定义分隔开 使用枚举常量 Kotlin 中的枚举类

  • 枚举类最基本的用法是实现一个类型安全的枚举。 枚举常量用逗号分隔,每个枚举常量都是一个对象。 enum class Color{ RED,BLACK,BLUE,GREEN,WHITE } 枚举初始化 每一个枚举都是枚举类的实例,它们可以被初始化: enum class Color(val rgb: Int) {     RED(0xFF0000),     GREEN(0x00FF0