前后端数据交互,一般以json的格式进行,而一般前端获取的数组都是js的基本数据类型的,如string、number、array等,如要将这些类型的数据传到后端进行交互,需要进行json格式化,需要用到JSON对象的stringfy()方法进行格式化
JSON.stringify(value[, replacer[, space]])
这个方法前面后两个参数可以不必需,具体用法参考
参数说明:
- value:
必需, 要转换的 JavaScript 值(通常为对象或数组)。
- replacer:
可选。用于转换结果的函数或数组。
如果 replacer 为函数,则 JSON.stringify 将调用该函数,并传入每个成员的键和值。使用返回值而不是原始值。如果此函数返回 undefined,则排除成员。根对象的键是一个空字符串:""。
如果 replacer 是一个数组,则仅转换该数组中具有键值的成员。成员的转换顺序与键在数组中的顺序一样。当 value 参数也为数组时,将忽略 replacer 数组。
- space:
可选,文本添加缩进、空格和换行符,如果 space 是一个数字,则返回值文本在每个级别缩进指定数目的空格,如果 space 大于 10,则文本缩进 10 个空格。space 也可以使用非数字,如:\t。
这里我拿一个自己做过的例子说明下
前一阵子做一个管理系统,里面涉及到异步请求,但是传到后台的数据格式一直不对,在ajax函数里面的data格式写成了这样
data:{"numberArr":JSON.stringify(numberArr)}
这里解释一下,numberArr是一个类似于['123','236','456','678']的字符串数组,这样写不好,后台接收到的是一个“numberArr=['123','236','456','678']”的字符串数组,这样不好处理
然后后来找了一下百度,发现这样写后台接收到的数据会比较好处理
$.ajax({
//请求路径
url:url+'/deleteUser',
//请求类型
type:'post',
//设置发送到服务器的数据类型
contentType:'application/json;charset=utf-8',
//设置异步处理请求
async:true,
//发送到服务器的数据
data:JSON.stringify(numberArr),
//设置预期服务器响应的数据类型
traditional:true,
dataType:'json',
//设置请求超时时间30秒
timeout:30000,
//请求成功
success:function(data){
},
//请求失败时执行函数
error:function () {
$.messager.alert('请求超时!','服务器正忙...请稍后再试!','error');
}
});
我这个是用到SSM来处理后台,所以后台如下
@RequestMapping(value="/deleteUser",produces = "application/json;charset=utf-8")
@ResponseBody
public String removeUser(@RequestBody String numberArr){
System.out.println("=============================================>"+numberArr);
//转字符串集合
List<String> numbers = JSON.parseArray(numberArr, String.class);
numbers.forEach(li->System.out.println("***************************>"+li));
return "";
}
这里直接根据传过来的numberArr字符串名称进行接收,而且必须在接收参数前加上@RequestBody,不然接收不到
DEBUG [http-bio-9090-exec-10] - Returning cached instance of singleton bean 'userController'
=============================================>null
正确接收到JSON字符串为类似于["10001","10006","10007"]
这样就可以直接使用com.alibaba.fastjson.JSON包中的方法直接对这个字符串进行转换,我这里直接利用反射,把它转换为String类型的List集合
List<String> numbers = JSON.parseArray(numberArr, String.class);
接下来就可以进行其他的操作了
来源:CSDN
作者:_Poison_2020
链接:https://blog.csdn.net/qq_38763540/article/details/103647234