/ / kotlinová trieda údajov HttpMessageNotReadableException - json, jar, kotlin

kotlinová trieda údajov HttpMessageNotReadableException - json, jar, kotlin

Skúšam tento kód poštou, ale nič nefunguje, prečo?

Čo posielam:

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

Môj pružinový ovládač:

@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"
}

}

Čo získam:

{
"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"

}

Moja trieda údajov o projektoch:

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

Zdvojnásobil som kontroly parám, nie je to chyba formulácie, čo to nefunguje?

EDIT:

Vďaka Toddovi bol problém vyriešený pridaním nuly do môjho paramu, aby sme vytvorili konštruktor s nulovým argumentom. Vďaka !

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

odpovede:

2 pre odpoveď č. 1

Dostal som to do práce dvoma nepatrnými zmenami.

Po prvé, pretože všetky vaše Project polia sú nulové, poskytujú predvolené hodnoty, takže kompilátor vygeneruje konštruktor nula argumentov:

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

Po druhé, zdá sa, že Jar chce, aby vaše polia boli snakey_case radšej než camelCase, takže zmeňte svoju užitočnú záťaž na toto:

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