Jackson 从 Kotlin 值类生成无效字段名称

Kev*_*dge 9 jackson kotlin

当 Kotlin 类具有属于新 @JvmInline 值类之一的属性时,Jackson 会将其转换为 JSON,并在字段名称上添加奇怪的后缀。

例如

@JvmInline
value class ModelName(val value: String)
Run Code Online (Sandbox Code Playgroud)
data class MyDto(val modelName: ModelName)
Run Code Online (Sandbox Code Playgroud)

Jackson 将生成如下所示的 JSON:

{
    "modelName-11MJ8YI": "Some Model Name"
}
Run Code Online (Sandbox Code Playgroud)

我尝试添加 @JsonProperty("modelName") 注释,但没有什么区别。

wro*_*ong 7

也许,升级jackson-module-kotlin可以解决这个问题。 https://github.com/FasterXML/jackson-module-kotlin/issues/356

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

出现此问题的原因是in的方法名称 ( getter)具有随机后缀。value classKotlin

  • 升级“jackson-module-kotlin”一开始并没有为我解决这个问题,因为我使用的是自定义的“ObjectMapper”。我能够通过创建“com.fasterxml.jackson.module.kotlin.jacksonObjectMapper”实例而不是“com.fasterxml.jackson.databind.ObjectMapper”来修复它(以防万一有人遇到同样的问题)。 (5认同)