ajax同时传map和list到java后端,map和list拼接成json,后端用map接收

今天给大家分享一下ajax同时传map和list到java后端,后端接收的方法。

本质上还是把map和list拼接成一个json字符串。

1.首先在js里创建一个map 一个list,然后给他们赋值

var list= new Array();
var map = new Map();

2.接下来把list和map转换成json格式,list可以直接用JSON.stringify去转

var listJson = JSON.stringify(list);
var mapJson = _mapToJson(map);
function _strMapToObj(strMap){
    let obj= Object.create(null);
    for (let[k,v] of strMap) {
        obj[k] = v;
    }
    return obj;
}
function _mapToJson(map) {
    return JSON.stringify(this._strMapToObj(map));
}

3.拼接起来,放到ajax的data里

var map1 = '{"key1":' + mapJson + ',"value1":'+listJson+' }';
$.ajax({
	type: 'PUT',
	url: 你的url,
	data: map1,
	dataType: 'json',
	contentType: 'application/json',

4.ajax里的data用@RequestBody注解来接收,因为只有一对key和value,所以就直接通过key获取了value,获取出来是String类型的,直接强转就可以了,现在的map和list就是你需要的结果,这样就结束了。

@PutMapping("/{id}")
public ResponseResult changeStatus(@RequestBody Map map1, @PathVariable("id") String id) {
    Map<String,String> map = (Map<String, String>) map1.get("key1");
    List<String> list= (List<String>) map1.get("value1");
}

 

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