我操縱以下JSON對象在我的網站前端JSON對象和Spring @RequestParam
<script>
window.campaign = {
name: "test",
budget: 20.00,
type: 0,
dynamic: false,
geo_target: [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27],
time_target: {
monday: ["00","00","00","00",1],
tuesday: ["00","00","00","00",1],
wednesday: ["00","00","00","00",1],
thursday: ["00","00","00","00",1],
friday: ["00","00","00","00",1],
saturday: ["00","00","00","00",1],
sunday: ["00","00","00","00",1]
},
setName: function(val) {
this.name = val;
},
//some more setters go here
}
</script>
然後我把它發送到使用AJAX
$.ajax({ type: "POST", url: submit_url, data: JSON.stringify(window.campaign) })
.done(function() { alert("success"); })
.fail(function() { alert("error"); });
我的Spring應用程序現在的問題是映射所有變量都相應地在我的@Controller
....
@RequestParam(value = "name", required = false, defaultValue = "") String name,
@RequestParam(value = "budget", required = false, defaultValue = "0") BigDecimal budget,
@RequestParam(value = "type", required = false, defaultValue = "0") int type,
@RequestParam(value = "dynamic", required = false, defaultValue = "false") boolean dynamic,
@RequestParam(value = "geo_target", required = false, defaultValue = "") int[] geoTargeting,
....
這一切工作正常,b UT我不知道如何映射time_target
我試圖創建一個新的Model
和使用@RequestBody
....
@RequestParam(value = "name", required = false, defaultValue = "") String name,
....
@RequestParam(value = "geo_target", required = false, defaultValue = "") int[] geoTargeting,
@RequestBody TimeTarget timeTargeting
....
沒有成功映射它。我用http://www.jsonschema2pojo.org爲我發送的整個對象創建了一個Class
,但沒有任何成功(僅供參考,它創建了兩個類,一個用於timeTargeting,另一個用於其他所有內容)。
我真的很絕望。幫助,請:)如果提供的代碼不夠,我可以更新更多。
1解決方案:'@RequestParam(value =「time_target」)String [] timeTargeting'這個工作給你? –
這個控制器會變得非常混亂。你可以在一個POST參數中發送整個JSON字符串。然後在你的後端,你使用一個簡單的JSON庫來解析字符串並從中獲取數據。 – mumpitz
我甚至懷疑它的作品。您正在發佈JSON而不是請求參數(afaik)。只需將JSON作爲一個主體發送,創建一個對象並將所有參數映射到該對象(傑克遜將爲您執行此操作)。 –