乐趣区

关于springboot:Lombok的Data类注解导致被JsonProperty注解字段被序列化了两次

问题形容

因为接口传参须要序列化对象,且字段名是全大写例如 ZPRODUCT 须要传输的格局为

{"ZPRODUCT":"afb"}

而如果不加 JsonProperty 注解会为

{"zproduct":"afb"}

这不是咱们想要的,因此咱们应用 @JsonProperty(“ZPRODUCT”) 来申明该字段序列化为咱们定义的全大写,同时咱们我的项目中应用到了 Lombok, 应用 @Data 注解来生成 get|set 等办法,当咱们序列化之后发现序列化字符串为

{
    "ZPRODUCT":"afb",
    "zproduct":"afb"
}

没错,多了一个属性。
很显著的序列化问题,而且必然和 Lombok 存在关系,所以咱们关上编译后的 Class 文件发现 setZPRODUCT 办法上没有被注解 @JsonProperty(“ZPRODUCT”)

解决方案

1:lombok 更改为 1.18.14, 没错这个版本能够, 我之前应用的为 1.18.22 比照两个版本生成的 class 文件能够发现 14 版本的 set 办法上有 @JsonProperty(“ZPRODUCT”) 注解而 22 版本上没有
2: 去掉 @Data 注解, 本人写 get|set 办法,并加上注解 @JsonProperty(“ZPRODUCT”)

退出移动版