@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;
}
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。
	声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
		
评论(0)