@RequestBody注解转对象中驼峰格式的参数无法接收到数据的问题解决方法

1.问题:驼峰格式的参数传递到后端,@RequestBody注解标注的实体对象参数没有接收到对应的数据

前端传参:
在这里插入图片描述
执行结果:
在这里插入图片描述
请求参数实体:

import lombok.Data;

/**
 * 请求参数
 * @author qzz
 */
@Data
public class DailyInspectTsznoRequestJson {
    private String belongedTo;
    private String recordNumber;
    private String checkFormNumber;
    private String tzsno;
    private String entCode;
}

2.解决方法:

方法一:修改前端传参格式,驼峰格式转换为下划线小写格式

把前端请求参数修改成 下划线小写格式:
在这里插入图片描述
后端接收参数不变。
重启项目,执行效果如下:
在这里插入图片描述
发现,问题得到解决。

方法二:在后端属性名上面添加 @JsonProperty("")注解,把自己的属性名称填进去,就可以了(推荐使用)

package com.hwariot.device.report.dto.json.request.openapi;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

/**
 * 请求参数
 *
 * 前端传递belongedTo等参数到后端的时候,belongedTo等参数是有值的,但是后端拿到的时候,就没有值了
 * 解决办法:
 * 在属性名上面添加 @JsonProperty("")注解,把自己的属性名称填进去,就可以了
 * @author qzz
 */
@Data
public class DailyInspectTsznoRequestJson {

    
    @JsonProperty("belongedTo")
    private String belongedTo;
    
    @JsonProperty("recordNumber")
    private String recordNumber;
  
    @JsonProperty("checkFormNumber")
    private String checkFormNumber;
    
    @JsonProperty("tzsno")
    private String tzsno;
    
    @JsonProperty("entCode")
    private String entCode;
}

前端参数保存驼峰格式不变,只修改后端。

然后重启项目,重新请求,执行效果如下:
在这里插入图片描述
发现数据都接收到了,问题得到解决。

注意:推荐使用第二种方法。

如果不使用@RequestBody注解,可以使用@RequestParam注解或者@PathVariable注解接收前端传递的JSON对象参数。具体方法如下: 1. 使用@RequestParam注解接收前端传递的JSON对象参数,需要将JSON对象换成字符串后再进行传输,可以使用JSON.stringify()方法JSON对象换成字符串,例如: ``` fetch('/api/test?obj=' + JSON.stringify({ name: 'Tom', age: 18 }), { method: 'POST', headers: { 'Content-Type': 'application/json' } }) ``` 在后端接口使用@RequestParam注解接收对象参数,例如: ``` @PostMapping("/test") public String test(@RequestParam("obj") String obj) { // 将参数字符串换成对象 JSONObject jsonObject = JSONObject.parseObject(obj); String name = jsonObject.getString("name"); Integer age = jsonObject.getInteger("age"); // do something } ``` 2. 使用@PathVariable注解接收前端传递的JSON对象参数参数可以直接拼接在URL进行传输,例如: ``` fetch('/api/test/' + JSON.stringify({ name: 'Tom', age: 18 }), { method: 'POST', headers: { 'Content-Type': 'application/json' } }) ``` 在后端接口使用@PathVariable注解接收对象参数,例如: ``` @PostMapping("/test/{obj}") public String test(@PathVariable("obj") String obj) { // 将参数字符串换成对象 JSONObject jsonObject = JSONObject.parseObject(obj); String name = jsonObject.getString("name"); Integer age = jsonObject.getInteger("age"); // do something } ``` 以上两种方式可以帮助你正确接收前端传递的JSON对象参数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值