Я создал службу Restfull с Spring, простой API для поддержки администратора:
@PostMapping("/admin/signup")
public ResponseEntity<?> signupAdmin(@RequestBody Admin admin){
if(adminRepository.existsById(admin.getUsername())){
return new ResponseEntity<String>("Username already taken", HttpStatus.FOUND);
}else{
adminRepository.save((Admin) admin);
return new ResponseEntity<Admin>( adminRepository.findByUsername(admin.getUsername()), HttpStatus.OK);
}
}
Вот код, с пропущенными геттерами и сеттерами:
@MappedSuperclass
public class User {
@Id
protected String username;
protected String email;
protected String password;
}
@Entity
public class Admin extends User{
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private Set<Survey> created_survey;
}
@Entity
public class Customer extends User{
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private List<Choice> choices;
}
Я много пробовал, но не могу это исправить, вот json, который нужно разобрать с Admin
{username: "aaa", email: "aaa@", password: "aaa", created_survey: []}
А вот это и есть ошибка:
POST "/admin/signup", parameters={}
Mapped to public org.springframework.http.ResponseEntity<com.modal.Admin> com.controller.LoginController.signupAdmin(com.modal.Admin)
Could not resolve parameter [0] in public org.springframework.http.ResponseEntity<com.modal.Admin> com.controller.LoginController.signupAdmin(com.modal.Admin): JSON parse error:Cannot deserialize instance of `com.modal.Admin` out of START_ARRAY token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `com.modal.Admin` out of START_ARRAY token
at [Source: (PushbackInputStream); line: 1, column: 1]
Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `com.modal.Admin` out of START_ARRAY token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `com.modal.Admin` out of START_ARRAY token
at [Source: (PushbackInputStream); line: 1, column: 1]]
Completed 400 BAD_REQUEST
Возможно, подклассы не наследуют поля.
Я знаю, что трудно найти способ решить эту ошибку, я надеюсь, что кто-то может просто помочь мне
решаемые
let user = {"username": "user", "email":"email", "password":"password"};
http = new XMLHttpRequest();
...
http.send(user); //WRONG
Как я решил это
let user = {"username": "user", "email":"email", "password":"password"};
http = new XMLHttpRequest();
...
http.send(JSON.stringify(user)); //CORRECT
Я не знаю, зачем нужен JSON.stringify, но он работает