@RequestBody時第二個字母大寫,映射不到的解決

@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;
}

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: