Saya menggunakan com.fasterxml.jackson.databind
dalam aplikasi booting pegas. Saat saya mengirim permintaan ke titik akhir, saya menerima pengecualian berikut:
com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of
org.pacakge.domain.controller.Mycontroller (although at least one Creator exists): cannot
deserialize from Object value (no delegate- or property-based Creator)\n at
[Source: (PushbackInputStream); line: 2, column: 3] Is the body of the request formatted correctly?
Pengontrol saya memproses badan permintaan yang memiliki struktur berikut:
{
"portalId": 123,
"objectType": "TYPE",
"objectTypeId": "0-3",
"objectId": 123,
"properties": { ... }
}
Satu-satunya properti yang saya butuhkan adalah objectId
. Saya telah membangun sebuah kelas untuk memproses objek ini seperti:
@lombok.Value
private static class MyObject {
@JsonAlias("objectId")
private final String dealId;
}
Saya telah merancang pengontrol yang terlihat seperti ini
@Slf4j
@RestController
@RequestMapping(path = "/entrypoint")
public class MyController {
@Autowired
public MyController(){}
/**
* REST endpoint handles MyObject
*/
@PostMapping(value = "/endpoint")
public void handleRequest(
@Valid @RequestBody MyObject command
) {
log.debug(command.getDealId());
}
@lombok.Value
private static class MyObject {
@JsonAlias("objectId")
private final String dealId;
}
}
Yang menarik dari masalah ini adalah permintaan saya diproses dengan baik jika saya mengubah MyObject
ke struktur berikut:
@lombok.Value
private static class MyObject {
@JsonAlias("objectId")
private final String dealId;
private final JSONObject properties; // TODO we shouldn't need this. Fix.
}
Sepertinya saya tidak tahu apa masalahnya. Saya ingin sekali bantuan untuk masalah ini. Mungkin ada anotasi yang saya lewatkan? Saya berharap orang lain pernah mengalami masalah ini. Saya belum menemukan informasi apa pun tentangnya hanya dengan mencari di web.