@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}
这是日志拿到的数据
文章图片
可以看到拿不到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
请求参数首字母转为小写
@Datapublic class RequestModel {@JsonProperty("BODY")@JSONField(name = "BODY")private RequestBodyModel Body; }
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
推荐阅读
- 任时光绽放成六月繁花
- 一个人的碎碎念
- 昨夜小楼听风
- 20170612时间和注意力开销记录
- 远去的风筝
- 为什么你的路演总会超时()
- 杜月笙的口才
- 时间老了
- MediaRecorder前后摄像头同时录像
- 眉头开了