/ / कोटलिन डेटा क्लास HttpMessageNotReadableException - जेसन, वसंत, कोटलिन

कोटलिन डेटा क्लास HttpMessageNotReadableException - जेसन, वसंत, कोटलिन

मैं पोस्टमैन के साथ इस कोड को आजमा रहा हूं, लेकिन कुछ भी काम नहीं करता, क्यों?

मैं क्या भेजता हूं:

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

मैंने चेक पैरा को दोगुना कर दिया, यह एक शब्द गलती नहीं है, यह काम क्या नहीं करता है?

संपादित करें:

टोड के लिए धन्यवाद, एक शून्य तर्क कन्स्ट्रक्टर उत्पन्न करने के लिए, समस्या को मेरे param पर शून्य मान जोड़कर हल किया गया था। धन्यवाद !

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