源码
ajax代码:
function stu(sno,sname){
var student = new Object();
student.sno = sno;
student.sname = sname;
return student;
}
var stus = [];
stus.push(stu("001","张三"));
stus.push(stu("002","李四"));
$.ajax({
url:"http://localhost:8099/addStudent",
type:"post",
contentType:"application/json;charset=utf-8",
dataType:"json",
data:JSON.stringify({stus:stus}),
success:function(data){
msg = data.msgContext;
document.getElementById("describe").style.display = "none";
console.log(msg)
},error:function(data){
alert("出错了")
}
})
后台接收代码:
// 保存页面源码
@PostMapping(value="addStudent")
public Message saveSourcesCode(@RequestBody List<Student> stus) {
stus.forEach(System.out::println);
return new Message("200","请求成功");
}
环境:springboot
问题发现:
看似代码没有错,但后台报异常:
Cannot deserialize instance of `java.util.ArrayList<com.lds.pojo.Student>` out of START_OBJECT token
即不能反序列化对象
通过排查发现,上传的json串是一个数组,里面包含的对象才是需要上传的目标对象数组
所以问题在于这里:
之前尝试一次上传多个对象的时候在stringify()里添加了‘{ }’,后面一直没删除,以为不会影响大局,但我还是太小白了。
问题解决:
将’stringify()里的{ }'删除。修改如下
解决之后查看上传的json串:
格式正确,上传成功!