Kann nicht vom Objektwert deserialisiert werden (kein delegaten- oder eigenschaftsbasierter Ersteller): Warum benötigt JJava

Java-Forum
Anonymous
 Kann nicht vom Objektwert deserialisiert werden (kein delegaten- oder eigenschaftsbasierter Ersteller): Warum benötigt J

Post by Anonymous »

Ich verwende Java Spring Boot für mein Projekt und habe den folgenden Controller:

Code: Select all

@AllArgsConstructor
@RestController
@RequestMapping("/api/subject")
public class SubjectController {
private SubjectService subjectService;

@PostMapping
public void createSubject(@RequestBody SubjectCreationDTO subjectCreationDTO) {
LoggingController.getLogger().info(subjectCreationDTO.getTitle());
//        subjectService.createSubject(subjectCreationDTO);
}
}
Und SubjectCreationDTO:

Code: Select all

@AllArgsConstructor
@Getter
@Setter
public class SubjectCreationDTO {
private String title;
}
Also erhalte ich diese Fehlermeldung, wenn ich eine POST-Anfrage stelle:

JSON-Analysefehler: Instanz von
kann nicht erstellt werden

Code: Select all

pweb.examhelper.dto.subject.SubjectCreationDTO
(obwohl mindestens
ein Ersteller vorhanden ist): kann nicht vom Objektwert deserialisiert werden (kein
delegat- oder eigenschaftsbasierter Ersteller)“

Ich kann diesen Fehler lösen, indem ich @NoArgsConstructor zu SubjectCreationDTO hinzufüge, aber warum ist das notwendig, wenn ich in anderen Fällen fast genau den gleichen Fall habe.

Code: Select all

@PostMapping
public ResponseEntity createStudent(@RequestBody StudentCreationDTO studentCreationDTO) {
StudentDTO savedStudent = studentService.createStudent(studentCreationDTO);
return new ResponseEntity(savedStudent, HttpStatus.CREATED);
}
und das ist die StudentCreationDTO-Klasse:

Code: Select all

@AllArgsConstructor
@Getter
@Setter
public class StudentCreationDTO {
private String username;
private String firstName;
private String lastName;
private String email;
}
Ich habe herausgefunden, dass Sie bei mehr als nur einem Feld nicht @NoArgsConstructor angeben müssen und die Jackson Library den Eingabe-JSON genauso gut aus dem Text analysieren kann. Meine Frage ist, warum es dieses Verhalten hat und warum es nicht analysiert werden kann, wenn ich nur ein Feld in der Klasse ohne den Standardkonstruktor habe, aber es kann, wenn ich mehrere Felder habe?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post