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

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

Сообщение Anonymous »

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

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

@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);
}
}
И ObjectCreationDTO:

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

@AllArgsConstructor
@Getter
@Setter
public class SubjectCreationDTO {
private String title;
}
Итак, я получаю эту ошибку при выполнении запроса POST:

Ошибка анализа JSON: невозможно создать экземпляр

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

pweb.examhelper.dto.subject.SubjectCreationDTO
(хотя существует по крайней мере
один создатель): невозможно десериализовать из значения объекта (нет
создателя на основе делегата или свойства)"

Я могу решить эту ошибку, добавив @NoArgsConstructor в ObjectCreationDTO, но зачем это необходимо, когда в других случаях у меня почти такой же случай.

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

@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;
}
Я понял, что в случае наличия более одного поля вам не нужно указывать @NoArgsConstructor, и библиотека Джексона может так же хорошо анализировать входной JSON из тела. Мой вопрос: почему он имеет такое поведение и почему он не может анализировать, если у меня есть только одно поле в классе без конструктора по умолчанию, но может, если у меня несколько полей?

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

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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