/ / kotlinデータクラスHttpMessageNotReadableException - json、spring、kotlin

kotlinデータクラスHttpMessageNotReadableException - json、spring、kotlin

私は郵便配達員とこのコードを試していますが、何も動作しません、なぜですか?

私が送るもの:

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

私はチェックパラメタを倍増しました。文章ミスではなく、このことはどういうものですか?

編集:

Toddのおかげで、問題はゼロ引数コンストラクタを生成するために、私のparamにnull値を追加することによって解決されました。ありがとう!

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

回答:

回答№1は2

私は2つのわずかな変更を加えることでこれを動作させました。

まず、あなたの 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"
}