大家好,这是我的第一个问题,希望你能帮助我解决我现在遇到的这个问题。
我想使用 JQuery 将 JSON 对象发送到 Spring Controller 。 JSON Object格式如下:
{"ssoArray":["21212", "231341"], "groupArray":["g10002", "g10003"]}
但我收到错误消息:客户端发送的请求在语法上不正确
我的环境:
- Spring 3.0.6
- jackson 1.9.13
- JBoss 4.2
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);
}
});
}
Controller 代码:
@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 对象中映射数组的示例。
提前致谢。
最佳答案
如果你想发送json,你必须将你的对象转换成json。否则,jQuery 会将其转换为参数字符串
data: JSON.stringify(jsonParameter)
关于java - Spring @RequestBody : the request sent by the client was syntactically incorrect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20531854/