@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。
推薦閱讀:
- 關於@JsonProperty,@NotNull,@JsonIgnore的具體使用
- 使用註解@Validated和BindingResult對入參進行非空校驗方式
- 解決@RequestBody搭配@Data的大坑
- spring validation多層對象校驗教程
- springboot @RequestBody 接收字符串實例