/ / kotlin class data HttpMessageNotReadableException - json, spring, kotlin

Котлін клас даних HttpMessageNotReadableException - json, spring, котлін

Я намагаюся це коду з почтальоном, але нічого не працює, чому?

Що я відправляю:

{
"name":"front_msel",
"gitlabId": "83",
"fichierVersion":"VERSION"
}

Мій весняний контролер:

@RestController
@RequestMapping("/projects")
class ProjectController(val projectRepository: ProjectRepository) {
private val log = LoggerFactory.getLogger(ProjectController::class.java)

@PostMapping()
fun saveProject(@RequestBody payload: Project): String {
log.info("project: "{}"", payload.toString())
return projectRepository.save(payload).gitlabId?:"-1"
}

}

Що я отримую:

{
"timestamp": 1505917417221,
"status": 400,
"error": "Bad Request",
"exception": "org.springframework.http.converter.HttpMessageNotReadableException",
"message": "JSON parse error: Can not construct instance of com.......model.Project: no suitable constructor found, can not deserialize from Object value (missing default constructor or creator, or perhaps need to add/enable type information?); nested exception is com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of com.......model.Project: no suitable constructor found, can not deserialize from Object value (missing default constructor or creator, or perhaps need to add/enable type information?)n at [Source: java.io.PushbackInputStream@66ba61d9; line: 2, column: 2]",
"path": "/projects"

}

Мій клас даних проекту:

data class Project(val name:String?, val gitlabId: String?, val fichierVersion: String?)

Я подвоїв контрольні параметри, це не помилка формулювання, чому це не працює?

EDIT:

Спасибі Тодду, проблема була вирішена, додавши нульове значення мого параметру, щоб створити нульовий конструктор аргументів. Дякую !

data class Project(val name:String? = null, val gitlabId: String? = null, val fichierVersion: String? = null)

Відповіді:

2 для відповіді № 1

Я отримав цю роботу, зробивши дві незначні зміни.

По-перше, оскільки всі ваші Project поля є нульовими, надають значення за замовчуванням, тому компілятор створить нульовий конструктор аргументів:

data class Project(val name:String? = null, val gitlabId: String? = null, val fichierVersion: String? = null)

По-друге, здається, що Весна хоче, щоб ваша сфера знаходилася snakey_case а не camelCase, тому змініть вашу корисну інформацію на це:

{
"name":"front_msel",
"gitlab_id": "83",
"fichier_version":"VERSION"
}