詳解使用@RequestBody取POST方式的json字符串
關(guān)于@RequestBody 映射實體類的方法,網(wǎng)上大量討論,不再細(xì)說。
但前端提交復(fù)雜結(jié)構(gòu),或動態(tài)性比較大的數(shù)據(jù)結(jié)構(gòu)時,就可能不能映射固定類。用map方式貌似也不太靈(沒有仔細(xì)研究,過程中,前端json結(jié)構(gòu)比較復(fù)雜時,失敗了)。
前端寫法:
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的提醒,重復(fù)做了map接收參數(shù)的實驗,效果不錯。
前端寫法一樣,
后端寫法:
@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。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
詳解SpringBoot中的tomcat優(yōu)化和修改
這篇文章主要介紹了詳解SpringBoot中的tomcat優(yōu)化和修改,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09spring boot+spring cache實現(xiàn)兩級緩存(redis+caffeine)
這篇文章主要介紹了spring boot+spring cache實現(xiàn)兩級緩存(redis+caffeine),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-02-02