[英]How to insert JSON object into database using spring boot and angularjs?
我是 Spring Boot 的新手,所以這個問題可能聽起來很傻。 我想在數據庫中插入一個 json 對象。 但它給了我一個錯誤,如:“無法評估 Jackson 反序列化類型”。 在控制台上,我收到如下錯誤:
JSON 的 Http 415 Unsupported Media type 錯誤
這是我的 POJO 類:
@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();
}
Angularjs 代碼:
$scope.saveAcademics = function() {
var adhaar = sessionStorage.getItem("emp-key");
var _data = {
"adhaarCard":adhaar,
"grades": {
"graduation":
{ "ssc": "SSC", "hsc": "HSC", "quOne": $scope.qone
},
"specialization":
{ 'ssc': "N.A", 'hsc': $scope.hscSpl, 'qoneSpl': $scope.qoneSpl},
"grade":
{ 'ssc': $scope.sscGrade, 'hsc': $scope.hscGrade, 'qoneGrade': $scope.qoneGrade},
"university":
{ 'ssc': $scope.sscUni, 'hsc': $scope.hscUni, 'qoneUni': $scope.qoneUni},
"year":
{ 'ssc': $scope.sscYear, 'hsc': $scope.hscYear, 'qoneYear': $scope.qoneYear}
}
};
console.log(_data);
$http({
url: 'saveacademics',
method: "POST",
data: JSON.stringify(_data)
})
.then(function(response) {
alert("Success");
},
function(response) { // optional
alert("Error Occoured.");
});
}
在 MediaType.APPLICATION_JSON_VALUE 上嘗試 MediaType.APPLICATION_JSON
@RequestMapping(value="saveacademics",method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON)
MediaType.APPLICATION_JSON
是“application/json 的公共常量媒體類型”,而MediaType.APPLICATION_JSON_VALUE
是“ MediaType.APPLICATION_JSON_VALUE
的字符串等價物”。
您從 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 ;
成績.java
private String university;
private String specialization;
private int grade;
private Sting graduation;
private int year;
添加列映射和 getter、setter。
提示:
您可以使用 @PostMapping 代替 @RequestMapping,這是一種簡寫。 所以你不會對媒體類型感到困惑,它以 application/json 作為默認類型。
@RequestMapping(value="saveacademics",method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
用。。。來代替
@PostMapping("saveacademics")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.