@RequestBody第二个字母大写,映射不到
记录一下今天遇到的一个问题, 贼难受
controller
/** * 添加 * * @param requestNavigationTagVO * @return */ @PostMapping("/add") public JsonData add(@RequestBody RequestNavigationTagVO requestNavigationTagVO) { navigationTagService.add(requestNavigationTagVO); return JsonData.ok(); }
RequestNavigationTagVO
@Builder @AllArgsConstructor @NoArgsConstructor @Data public 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 }
这是日志拿到的数据
可以看到拿不到pId数据(p_id的驼峰写法),
原因:这里使用的@Data注解(省去了get和set方法)
public Long getPId() { ... } public void setPId(Long PId) { ... }
而javaBean的规范导致json传参首字母大写将永远获取不到
参考javaBean的规范导致json传参首字母大写将永远获取不到。。。
解决办法:
1,不去使用首字目大写或第二个字母大写的参数
2,自己生成get和set方法
3,使用@JsonProperty注解
@JsonProperty("pId") private Long pId;
Springboot中@RequestBody大小写转换
使用fastjson
请求参数首字母转为小写
@Data public class RequestModel { @JsonProperty("BODY") @JSONField(name = "BODY") private RequestBodyModel Body; }
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/jiahao791869610/article/details/93744864