假设有一个具有布尔属性的类,其名称以is
开头:
class Preferrable {
var isPreferred: Boolean = true
}
它被序列化为{"preferred":true}
,删除is
部分。
如本问题所述,为了防止这种情况,我们需要使用@JsonProperty("isPreferred")
注释显式指定属性名称。
这种方法与Java完美配合。但是在 Kotlin 类的情况下,带有注释属性序列化形式包含属性重复:{"preferred":true,"isPreferred":true}
.
解决方法是将注释应用于属性 getter。它不适用于数据类,至于我,这段代码看起来有点太多了,只是保持属性名称不变:
class Preferrable {
var isPreferred: Boolean = true
@JsonProperty(value = "isPreferred")
get() = field
}
这种行为背后的原因是什么?这只是一个错误吗?有没有更简单的方法来防止 Kotlinis
前缀删除?
布尔值的处理方式与其他数据类型略有不同。您需要在注释中显式使用@get
:
@get:JsonProperty("isPreferred")
var isPreferred: Boolean = true
请注意,这确实适用于数据类,例如
data class Preferrable(
@get:JsonProperty("isPreferred")
var isPreferred: Boolean = true
)
有关更多信息,请参阅此问题(以及指向更详细讨论位置的链接)。