首页 > 解决方案 > 为什么@JsonProperty 不适用于 Kotlin 中的驼峰式属性

问题描述

有一个非常简单的类:

class Price(
    @JsonProperty("YPRICE")
    val yprice: String? = null,

    @JsonProperty("ZPRICE")
    val zPrice: String? = null
)

以下代码序列化为字符串:

val mapper = ObjectMapper().registerKotlinModule()
mapper.writeValue(System.out, Price())

控制台中的结果是:

{"YPRICE":null,"zprice":null}

如果更改zPriceto的属性zprice,则结果更改为:

{"YPRICE":null,"ZPRICE":null}

如果更改ypriceto的属性yPrice,则结果变为:

{"yprice":null,"zprice":null}

似乎这@JsonProperty不适用于骆驼案例属性。

标签: kotlinjackson

解决方案


您需要指示基于字段而不是基于方法ObjectMapper生成属性。您可以使用注释:JSONgettercom.fasterxml.jackson.annotation.JsonAutoDetect

@JsonAutoDetect(getterVisibility = JsonAutoDetect.Visibility.NONE, fieldVisibility = JsonAutoDetect.Visibility.ANY)
class Price(

从现在开始,在所有情况下,您都应该看到相同的结果。

看一眼:


推荐阅读