传参请求时jackson大小写取值异常和序列化多出一个属性的问题学习记录

在开发业务中有一个请求接受实体大致如下:

@Data
public class ActivityAddQuery {
   
    /**
     * a类标签
     */
    @NotBlank(message="a类标签不能为空")
    @Length(max=64,message = "")
    private String aLabel;
    }

在前端请求参数设置为{“aLabel”:“aaa”}时后端接受到的参数一直为空,查询资料发现,spring的jackson参数发现顺序,依次如下:
1.所有被public修饰的字段;
2.所有被public修饰的getter;
3.所有被public修饰的setter。
由于aLabel被设置成private,不符合第1条,到了第二条得到的是getALabel()方法,jackson不知道第一个A是大写还是小写,默认将从第一个大写开始的所有大写字母识别成小写,即alabel,读取setALabel()也一样。例如属性aLLbel也会由getALLabel()识别成allbel。
解决方案: 添加@JsonProperty(“aLabel”)指定json名称即可。

@Data
public class ActivityAddQuery {
   
    /**
     * a类标签
     */
    @JsonProperty("aLabel")
    private String aLabel;
    }

想要知道原因,首先查看编译之后的的class为

@Data
public class ActivityAddQuery {
   
    /**
     * a类标签
     */
    @JsonProperty("aLabel")
    private String aLabel;
   
	 public String getALabel() {
   
            return this.aLabel;
     }

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值