Jackson 根据 Kotlin 值生成无效的字段名称 类

Jackson produces invalid field names from Kotlin value classes

当 Kotlin class 有一个 属性 是新的 @JvmInline 值 classes 之一时,Jackson 将其转换为 JSON 并带有一个奇怪的后缀字段名称。

例如

@JvmInline
value class ModelName(val value: String)
data class MyDto(val modelName: ModelName)

Jackson 将产生 JSON 如下所示:

{
    "modelName-11MJ8YI": "Some Model Name"
}

我试过添加 @JsonProperty("modelName") 注释,但没有任何区别。

升级jackson-module-kotlin可能会解决这个问题。 https://github.com/FasterXML/jackson-module-kotlin/issues/356

如果无法升级,将 getter 命名为 @get:JvmName("getModelName") 应该也能解决问题。

这个问题的原因是Kotlinvalue class的方法名(getter)有一个随机的后缀。