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")
应该也能解决问题。
这个问题的原因是Kotlin
中value class
的方法名(getter
)有一个随机的后缀。
当 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")
应该也能解决问题。
这个问题的原因是Kotlin
中value class
的方法名(getter
)有一个随机的后缀。