使用@RequestBody 取POST方式的json字符串

【轉載地址】https://blog.csdn.net/BigBad/article/details/78138547

關於@RequestBody 映射實體類的方法,網上大量討論,不再細說。

但前端提交複雜結構,或動態性比較大的數據結構時,就可能不能映射固定類。用map方式貌似也不太靈(沒有仔細研究,過程中,前端json結構比較複雜時,失敗了)。


前端寫法:

 var json_data={
              “name” : “demographics”,
              “params” : [1 , 2, 3],
              “items” : [ {“name” : “中文”, “value” : 10 },
                          {“name”: “item2”,  “value” : 20 }
                        ]
           };
        $.ajax({
        url : ‘chart/graphics’,
        type : ‘post’,
        data : JSON.stringify(json_data),
        contentType : ‘application/json;charset=utf-8’ 
 
//中文需要加上charset=utf-8才正確
     });

後端寫法

   @RequestMapping(value=”/{name}”, method=RequestMethod.POST, produces=”application/json;charset=utf-8;”)
    @ResponseBody
    public String postDashboardItem(
            @PathVariable(value=”name”)  String name,
            @RequestBody  String params,

             Model model) {

      JSONObject object= JSON.parseObject(params);

     //do somthings

     return “”;  //json string

}


更正:

感謝alan_waker的提醒,重複做了map接收參數的實驗,效果不錯。

前端寫法一樣,

後端寫法:

   @RequestMapping(value=”/{name}”, method=RequestMethod.POST, produces=”application/json;charset=utf-8;”)
    @ResponseBody
    public String postDashboardItem(
            @PathVariable(value=”name”)  String name,
            @RequestBody  Map<String, Object> params,

             Model model) {

     //do somthings

     return “”;  //json string

}

需要引用 jackson-databind包,否則前端會報 415錯誤。後臺報Content type ‘application/json;charset=UTF-8’ not supported。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章