我需要將自定義對象的地圖Map<String, Set<Result>>
從前端發送到後端。如何使用@RequestBody從JSON綁定自定義對象的地圖
所以我認爲應該可以構建JSON,通過Ajax將其發送給控制器,並通過@RequestBody
註釋將其接收到控制器中,該註釋應該將json綁定到對象。對?
控制器:
@RequestMapping(value = "/downloadReport", method = RequestMethod.POST)
public ResponseEntity<byte[]> getReport(@RequestBody Map<String, Set<Result>> resultMap)
{
Context context = new Context();
context.setVariable("resultMap", resultMap);
return createPDF("pdf-report", context);
}
JSON:
{
"result": [
{
"id": 1,
"item": {
"id": 3850,
"name": "iti"
},
"severity": "low",
"code": "A-M-01",
"row": 1,
"column": 1,
"description": "Miscellaneous warning"
}
]
}
型號:
public class Result {
private Integer id;
private Item item;
private String severity;
private String code;
private Integer row;
private Integer column;
private String description;
//getter & setters
//hashCode & equals
}
public class Item {
private Integer id;
private String name;
//getter & setters
}
發送經過這樣一個JSON像上面阿賈克斯我從瀏覽器收到錯誤消息:
The request sent by the client was syntactically incorrect
如果我改變JSON發送空集像下面那麼它的工作原理,但當然,我的地圖都有空集:
{"result": []}
所以,爲什麼我不能夠接收與組對象的填充地圖?爲什麼綁定/解組不能按預期工作,以及我應該如何使其生效?
說明: 我正在使用Jackson庫和編組爲其他情況@ResponseBody
工作正常。問題是通過@RequestBody
取消編組和綁定對象。