大家好,这是我的第一个问题,希望你能帮助我解决我现在遇到的这个问题。
我想使用JQuery将JSON对象发送到Spring Controller。 JSON对象的格式如下:
{"ssoArray":["21212", "231341"], "groupArray":["g10002", "g10003"]}
但是我收到了错误消息:客户端发送的请求在语法上不正确
我的环境:
JQuery代码: 更新:添加了进行ajax调用的javascript方法的完整代码
function addRemoveAdmin(action, ssoArray, groupArray) {
var uri = actionPath + "/";
var jsonParameter = {"ssoArray":ssoArray, "groupArray":groupArray};
if(action == "add") {
uri = uri + addAdminAction;
} else {
uri = uri + removeAdminAction;
}
console.log(typeof jsonParameter);
$.ajax({
url:uri,
type:"POST",
data:jsonParameter,
contentType:"application/json; charset=utf-8",
dataType:"json",
success: function(){
alert(data);
}
});
}
控制器代码:
@RequestMapping(value = "/addAdmin", method = RequestMethod.POST)
public String addAdmin(@RequestBody final AdminAndGroup personsAndGroups) throws Exception {
LOGGER.info("[RequestController] - addAdmin start");
LOGGER.info(personsAndGroups.toString());
return "OK";
}
映射类:
public class AdminAndGroup implements Serializable {
private static final long serialVersionUID = 9024455757311860269L;
private List<String> ssoArray;
private List<String> groupArray;
public AdminAndGroup(){}
public List<String> getSsoArray() {
return ssoArray;
}
public void setSsoArray(List<String> ssoArray) {
this.ssoArray = ssoArray;
}
public List<String> getGroupArray() {
return groupArray;
}
public void setGroupArray(List<String> groupArray) {
this.groupArray = groupArray;
}
@Override
public String toString() {
return "AdminAndGroup [ssoArray=" + ssoArray + ", groupArray="
+ groupArray + "]";
}
}
我已经使用java.util.List来映射JSON对象内部的数组,但我不确定这是否是解决问题的正确方法。
我也在Stack Overflow中搜索过,但我没有找到如何在JSON对象中映射数组的示例。
提前致谢。
答案 0 :(得分:3)
如果要发送json,则必须将对象转换为json。否则,jQuery会将其转换为参数字符串
data: JSON.stringify(jsonParameter)