问题描述
由于接口传参需要序列化对象,且字段名是全大写例如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")
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。