@RequestBody时第二个字母大写|@RequestBody时第二个字母大写,映射不到的解决

@RequestBody第二个字母大写,映射不到 记录一下今天遇到的一个问题, 贼难受
controller

/*** 添加** @param requestNavigationTagVO* @return*/@PostMapping("/add")public JsonData add(@RequestBody RequestNavigationTagVO requestNavigationTagVO) {navigationTagService.add(requestNavigationTagVO); return JsonData.ok(); }

【@RequestBody时第二个字母大写|@RequestBody时第二个字母大写,映射不到的解决】RequestNavigationTagVO
@Builder@AllArgsConstructor@NoArgsConstructor@Datapublic class RequestNavigationTagVO {/*** id*/private Long id; /*** 所属导航id*/@NotNull(groups = {AddNavigationTag.class, ModifyNavigationTag.class}, message = "所属导航id不能为空")private Long pId; /*** 标签名称*/@NotBlank(groups = {AddNavigationTag.class, ModifyNavigationTag.class}, message = "标签名称不能为空")private String name; /*** 排序*/@NotNull(groups = {AddNavigationTag.class, ModifyNavigationTag.class}, message = "排序不能为空")private Integer sort; }

postman调接口
{ "pId": 654577072911111, "name":"中餐", "sort":1}

这是日志拿到的数据
@RequestBody时第二个字母大写|@RequestBody时第二个字母大写,映射不到的解决
文章图片

可以看到拿不到pId数据(p_id的驼峰写法),
原因:这里使用的@Data注解(省去了get和set方法)
public Long getPId() {...} public void setPId(Long PId) {... }

@RequestBody时第二个字母大写|@RequestBody时第二个字母大写,映射不到的解决
文章图片

而javaBean的规范导致json传参首字母大写将永远获取不到
参考javaBean的规范导致json传参首字母大写将永远获取不到。。。
解决办法:
1,不去使用首字目大写或第二个字母大写的参数
2,自己生成get和set方法
@RequestBody时第二个字母大写|@RequestBody时第二个字母大写,映射不到的解决
文章图片

3,使用@JsonProperty注解
@JsonProperty("pId") private Long pId;

Springboot中@RequestBody大小写转换
使用fastjson
请求参数首字母转为小写
@Datapublic class RequestModel {@JsonProperty("BODY")@JSONField(name = "BODY")private RequestBodyModel Body; }

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

    推荐阅读