springmvc接收复杂类型的json数据需要注意的地方

1.如果接收的是普通的数据类型或者单对象

后端的方法上面什么也不需要处理,只需要将对象放入到参数上面就可以了

2.如果接收的是复杂类型
  例如对象里面还包含对象或者是集合等,后端的方法参数上面只需要加上@RequestBody即可,但是还没有完,前端传递的时候需要加上contentType:application/json
好了,栗子来了:
实体类:
 
 
public class SignUpSave {

    private Integer taskID;
    private Integer skillID;
    List<SignUpSave.Data> equipment = new ArrayList<SignUpSave.Data>();
    /*...*/
    public static class Data{
        private Integer equipmentDetailID;
        private Integer qty;
        /*...*/
    }
}
Controller的方法:
 
 
public SignUpResult SignUp(HttpServletRequest request,@RequestBody SignUpSave signUpSave) throws Exception{
    /*...*/
    return signUpResult;
}
前端发送的数据:
 
 
var test = {
    "TaskID": "1",
    "SkillID": "1",
    "Equipment": [
        {
            "EquipmentDetailID": "1",
            "Qty": "1"
        }
    ]
};
$.ajax({
    type: "POST",
    url:"...",
    contentType: "application/json",
    data: JSON.stringify(test),
    dataType: "json",
    success:function(res){
        console.log(res)
    }
})
测试结果看下面图片
总结
  接收复杂类型的时候一定要加上contentType:application/json,要不然后端会报错,无法转换。

猜你喜欢

转载自blog.csdn.net/richangbiji/article/details/78812030