问题形容
因为接口传参须要序列化对象,且字段名是全大写例如 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”)