前后端字段一致,后端取值为null问题描述:
前端发送的数据格式:
{
"cId":"A0Fw7y",
"cName":"java",
"teacherId":"123",
"credit":4,
"limit":100,
"classRoom":"A01-0101",
"timeRange":"周二_第二大节",
"type":"必修",
"academy":"计算机学院",
"cIntro":"介绍..."
}
后端数据格式:
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Course {
private String cId; //[lombok BUG] 前后端字段名一致 但后端接受值为null
private String cName;
private String teacherId;
private Integer credit;
private String classRoom;
private Integer limit;
private String timeRange;
private String type;
private String academy;
private String cIntro;
}
后端方法:
@PostMapping()
@ResponseBody
public Result addLecture(@RequestBody Course course){
System.out.println(course);
return new Result();
}
前后端字段保持一致 但是后端收到前端请求数据时 发生后端部分字段取值为null的情况:
解决方案:
-
修改前端数据发送格式:
{ "lecture":{ "cId":"A0Fw7y", "cName":"java", "teacherId":"123", "credit":4, "limit":100, "classRoom":"A01-0101", "timeRange":"周二_第二大节", "type":"必修", "academy":"计算机学院", "cIntro":"介绍..." } }
-
添加fastjson依赖
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.28</version> </dependency>
-
修改方法,用Map 接收参数:
@PostMapping() @ResponseBody public Result addLecture(@RequestBody Map<String,Object> map){ System.out.println(map); // 需要将map.get("lecture")中的值转换为json字符串 然后将json转换为Course对象 Course course = JSONObject.parseObject(JSON.toJSONString(map.get("lecture")),Course.class); System.out.println(course); return new Result(); }
输出结果如下 :
全部取值不为null