kotlin - 为什么@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}
如果更改zPrice
to的属性zprice
,则结果更改为:
{"YPRICE":null,"ZPRICE":null}
如果更改yprice
to的属性yPrice
,则结果变为:
{"yprice":null,"zprice":null}
似乎这@JsonProperty
不适用于骆驼案例属性。
解决方案
您需要指示基于字段而不是基于方法ObjectMapper
生成属性。您可以使用注释:JSON
getter
com.fasterxml.jackson.annotation.JsonAutoDetect
@JsonAutoDetect(getterVisibility = JsonAutoDetect.Visibility.NONE, fieldVisibility = JsonAutoDetect.Visibility.ANY)
class Price(
从现在开始,在所有情况下,您都应该看到相同的结果。
看一眼:
推荐阅读
- python - 自定义函数在出现错误时返回的内容
- r - 将图例添加到由 ggplot 包装的饼图
- apache-camel - direct-vm 路由中缺少 routeId
- ios - 在 SwiftUI 中使用包装的 UIKit 选项卡视图在按钮按下时切换选项卡
- adobe - 如何设置 Adobe 分析?
- c# - ARM 上用于 HoloLens 2 的 gRPC 支持
- ffmpeg - 无法在 buildozer 或 p4a 中构建 FFmpeg
- c# - Google Drive Auth2:如何修复错误 400:redirect_uri_mismatch
- python - 如何创建一个猜数字游戏(机器猜用户正在想的数字)
- python - 使用 pynput 键入冒号 (:)