java - Spring @RequestBody : the request sent by the client was syntactically incorrect

标签 java jquery json spring spring-mvc

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

我想使用 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/

相关文章:

jquery - 在 CanJs 中查找附加到元素的控件的名称

javascript - 如何在 localStorage API HTML5 中保存函数

java - 处理 JavaFX 事件,例如从文本字段控件捕获文本

java - Spark - 使用 OpenCSV 解析文件的序列化问题

java - java中如何从一个较大的子字符串中提取多个子字符串?

Javascript onload 函数替代方案

java - WebRenderer Swing 和服务器版

javascript - 发布复选框值

javascript - Highcharts 循环 JSON 对象来填充数据系列

c++ - 如何在C++文件中声明标识符JSON?