Не может десериализировать от значения объекта (без делегат или создателя на основе свойств): зачем Джексону нужен констJAVA

Программисты JAVA общаются здесь
Anonymous
Не может десериализировать от значения объекта (без делегат или создателя на основе свойств): зачем Джексону нужен конст

Сообщение Anonymous »

Я использую Java Spring Boot для своего проекта, и у меня есть следующий контроллер: < /p>

Код: Выделить всё

@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);
}
}
< /code>
и субъект@AllArgsConstructor
@Getter
@Setter
public class SubjectCreationDTO {
private String title;
}
< /code>
Поэтому я получаю эту ошибку при выполнении запроса сообщения: < /p>

json parse error: не может построить экземпляр
pweb.examhelper.dto.subject.SubjectCreationDTO< /code> (хотя, по крайней мере,
один создатель существует): не может десериализировать из значения объекта (no
делегат или создатель на основе свойств) "< /p>
< /blockquote>   Я могу решить эту ошибку, добавив @noargsconstructor к субъектуреализации, < /code>, но почему это необходимо, когда в других случаях у меня почти точно такой же случай. < /p>
@PostMapping
public ResponseEntity createStudent(@RequestBody StudentCreationDTO studentCreationDTO) {
StudentDTO savedStudent = studentService.createStudent(studentCreationDTO);
return new ResponseEntity(savedStudent, HttpStatus.CREATED);
}
И это StudentCreationDto класс:
@AllArgsConstructor
@Getter
@Setter
public class StudentCreationDTO {
private String username;
private String firstName;
private String lastName;
private String email;
}
< /code>
Я понял, что в случае наличия более чем одного поля вам не нужно указывать @noargscstructor, а библиотека Джексона может проанализировать ввод JSON из тела так же хорошо. Мой вопрос заключается в том, почему у него есть такое поведение, и почему он не может разобрать, если у меня есть только одно поле в классе без конструктора по умолчанию, но это может, если у меня есть несколько полей?

Подробнее здесь: https://stackoverflow.com/questions/782 ... -creator-w

Вернуться в «JAVA»