Java 如何使用spring boot和angularjs将JSON对象插入数据库?
我不熟悉Spring boot,所以这个问题听起来可能很傻。我想在数据库中插入一个json对象。但它给了我一个错误,比如: “无法计算类型的Jackson反序列化”。 在控制台上,我收到一个错误,如: Http 415不支持JSON的媒体类型错误 这是我的POJO课程:Java 如何使用spring boot和angularjs将JSON对象插入数据库?,java,json,angularjs,spring-boot,spring-data-jpa,Java,Json,Angularjs,Spring Boot,Spring Data Jpa,我不熟悉Spring boot,所以这个问题听起来可能很傻。我想在数据库中插入一个json对象。但它给了我一个错误,比如: “无法计算类型的Jackson反序列化”。 在控制台上,我收到一个错误,如: Http 415不支持JSON的媒体类型错误 这是我的POJO课程: @Entity @Table(name = "academics") public class Academics { @Id @GeneratedValue(strategy = GenerationType
@Entity
@Table(name = "academics")
public class Academics {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private int id;
@Column(name = "adhaarcard")
private String adhaarCard;
@Column(name = "grade")
private List grades;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getAdhaarCard() {
return adhaarCard;
}
public void setAdhaarCard(String adhaarCard) {
this.adhaarCard = adhaarCard;
}
public List getGrades() {
return grades;
}
public void setGrades(List grades) {
this.grades = grades;
}
}
我的控制器功能:
@RequestMapping(value="saveacademics",method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Object> saveAvademics(@RequestBody Academics academics) {
academicsService.save(academics);
URI location = ServletUriComponentsBuilder.fromCurrentRequest().path("/{id}")
.buildAndExpand(academics.getId()).toUri();
return ResponseEntity.created(location).build();
}
请在MediaType.APPLICATION\u JSON\u值上尝试MediaType.APPLICATION\u JSON
@RequestMapping(value="saveacademics",method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON)
MediaType.APPLICATION\u JSON
是“APPLICATION/JSON的公共常量媒体类型”,而MediaType.APPLICATION\u JSON\u VALUE
是“MediaType.APPLICATION\u JSON的字符串等价物”。从angular js生成的JSON与Java pojo不匹配
更好的是,您可以如下所示重新格式化json
{ adhaarCard: "12", grades : [
{ university: "univ name", specialization: "sadd", grade: 83, graduation:"SSC", year: 2007 },
{ university: "univ name", specialization: "sadd", grade: 67, graduation:"HSC", year: 2009 }
]
}
并将PoJo类映射为
@Column(name = "adhaarcard")
private String adhaarCard;
@Column(name = "grade")
private List<Grades> grades ;
添加列映射和getter、setter
提示:
您可以使用@PostMapping来代替@RequestMapping,它是一种速记。因此,您不会混淆媒体类型,它将application/json作为默认类型
@RequestMapping(value="saveacademics",method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
取代
@PostMapping("saveacademics")
原因可能是列表中没有泛型类型?尝试添加它吧?AngularJS$http服务会自动字符串化数据。做两次是明智的吗?{u data.adhaarCard:“1111111111”的后控制台输出等级:等级:{ssc:“83”,hsc:“67”,qoneGrade:“60”}毕业:{ssc:“ssc”,hsc:“hsc”,quOne:“Eng”}专业:{ssc:“N.A”,hsc:“Scii”,qoneSpl:“comp sci.”大学:{ssc:“Nasik”,hsc:“Nasik”,qoneUni:“Pune”}年份:{ssc:“2007”,hsc:“2009”,qoneYear:“2013”}引发错误:“类型不匹配:无法从MediaType转换为字符串[]”,请尝试使用“application/json”代替MediaType.application_json
@RequestMapping(value="saveacademics",method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
@PostMapping("saveacademics")