关于json请求中字段大写,后端接收不到数据的问题

在前后交互请求中,采用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可以正常接收到值了,执行的结果如下:


原文链接:,转发请注明来源!