【问题标题】:Parse JSON containing an array of enums in Kotlin with Klaxon使用 Klaxon 在 Kotlin 中解析包含枚举数组的 JSON
【发布时间】:2018-03-07 21:05:28
【问题描述】:

我是 Kotlin 的新手,正在尝试从 JSON 解析枚举数组:

val convertColor = object: Converter<Color> {
    override fun toJson(value: Color): String? = when(value) {
        Color.R -> "red"
        Color.G -> "green"
        Color.B -> "blue"
        else -> null
    }

    override fun fromJson(jv: JsonValue): Color = when(jv.inside) {
        "red" -> Color.R
        "green" -> Color.G
        "blue" -> Color.B
        else -> throw IllegalArgumentException("Invalid Color")
    }
}

enum class Color { R, G, B }
data class Root (val colors: Array<Color>)

然后我尝试解析一个样本:

val klaxon = Klaxon().converter(convertColor)
val result = klaxon.parse<Root>("""
{
    "colors": ["red", "green", "blue"]
}
""")

但是我得到了这个运行时异常:

Exception in thread "main" java.lang.IllegalArgumentException: array element type mismatch

似乎转换器没有应用于数组元素。

【问题讨论】:

    标签: json kotlin klaxon


    【解决方案1】:

    如果您将Array 替换为List,它仍然有效,无论如何都推荐:

    data class Root(val colors: List<Color>)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-25
      • 2018-08-11
      • 1970-01-01
      • 2021-07-15
      • 1970-01-01
      • 2020-01-27
      • 2018-01-18
      相关资源
      最近更新 更多