Tôi gặp lỗi sau khi cố gắng nhận yêu cầu JSON và xử lý nó:
org.codehaus.jackson.map.JsonMappingException: Không tìm thấy hàm tạo phù hợp nào cho loại [loại đơn giản, lớp com.myweb.ApplesDO]: không thể khởi tạo từ đối tượng JSON (cần thêm / bật thông tin loại?)
Đây là JSON tôi đang cố gắng gửi:
{
"applesDO" : [
{
"apple" : "Green Apple"
},
{
"apple" : "Red Apple"
}
]
}
Trong Trình điều khiển, tôi có chữ ký phương thức sau:
@RequestMapping("showApples.do")
public String getApples(@RequestBody final AllApplesDO applesRequest){
// Method Code
}
AllApplesDO là một trình bao bọc của ApplesDO:
public class AllApplesDO {
private List<ApplesDO> applesDO;
public List<ApplesDO> getApplesDO() {
return applesDO;
}
public void setApplesDO(List<ApplesDO> applesDO) {
this.applesDO = applesDO;
}
}
TáoDO:
public class ApplesDO {
private String apple;
public String getApple() {
return apple;
}
public void setApple(String appl) {
this.apple = apple;
}
public ApplesDO(CustomType custom){
//constructor Code
}
}
Tôi nghĩ rằng Jackson không thể chuyển đổi JSON thành các đối tượng Java cho các lớp con. Vui lòng trợ giúp với các tham số cấu hình để Jackson chuyển đổi JSON thành Đối tượng Java. Tôi đang sử dụng Spring Framework.
EDIT: Bao gồm lỗi lớn gây ra vấn đề này trong lớp mẫu ở trên - Vui lòng xem câu trả lời được chấp nhận cho giải pháp.