Spring @RequestBody:客户端发送的请求在语法上是不正确的

时间:2013-12-11 23:07:25

标签: java jquery json spring spring-mvc

大家好,这是我的第一个问题,希望你能帮助我解决我现在遇到的这个问题。

我想使用JQuery将JSON对象发送到Spring Controller。 JSON对象的格式如下:

{"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);
        }
    });
}

控制器代码:

@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对象中映射数组的示例。

提前致谢。

1 个答案:

答案 0 :(得分:3)

如果要发送json,则必须将对象转换为json。否则,jQuery会将其转换为参数字符串

data: JSON.stringify(jsonParameter)