在前后交互请求中,采用post+json的请求方式进行前后端数据的交互,但是在有些情况下,某些字段有一定的特殊含义,比如需要首字母大写,或者是全部大写的情况。这类情况,采用平时的实体类中的字段是无法接收到值的。如下:
采用postman请求:
后端接口接收
1、controller层代码如下:
@Slf4j
@RestController
@RequestMapping("/test")
public class TestController {
/**
* 测试实体类中某个特殊字段的参数接收
*
* @param userInfoDto
*/
@PostMapping("/model")
public void testModelInfo(@RequestBody UserInfoDto userInfoDto) {
log.info(userInfoDto.toString());
}
}
2、UserInfoDto的实体类:EPlatformCode有特定的含义,首字母大写
@Data
public class UserInfoDto implements Serializable {
private String id;
private String name;
private String address;
private int age;
private String tel;
/**
* e平台编号
*/
private String EPlatformCode;
@Override
public String toString() {
return "UserInfoDto{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", address='" + address + '\'' +
", age=" + age +
", tel='" + tel + '\'' +
", EPlatformCode='" + EPlatformCode + '\'' +
'}';
}
}
第一次请求的,实体类中EPlatformCode字段和其他字段一样没有特殊处理,是无法接收到值的,如下:
将实体类中EPlatformCode字段加上注解:@JsonProperty("EPlatformCode"),接收指定参数的值:实体类修改为:
@Data
public class UserInfoDto implements Serializable {
private String id;
private String name;
private String address;
private int age;
private String tel;
/**
* e平台编号
*/
@JsonProperty("EPlatformCode")
private String EPlatformCode;
@Override
public String toString() {
return "UserInfoDto{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", address='" + address + '\'' +
", age=" + age +
", tel='" + tel + '\'' +
", EPlatformCode='" + EPlatformCode + '\'' +
'}';
}
}
则EPlatformCode可以正常接收到值了,执行的结果如下: