【问题标题】:Spring @RequestBody: the request sent by the client was syntactically incorrectSpring @RequestBody:客户端发送的请求语法不正确
【发布时间】:2013-12-30 04:14:23
【问题描述】:

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

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

{"ssoArray":["21212", "231341"], "groupArray":["g10002", "g10003"]}

但我收到错误消息:客户端发送的请求语法不正确

我的环境:

  • 春季 3.0.6
  • 杰克逊 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 对象中映射数组的示例。

提前致谢。

【问题讨论】:

  • jsonParameter 一个字符串,还是一个对象。 console.log(typeof jsonParameter)
  • @KevinB 这是一个对象,我更新了问题以显示整个 javascript 方法。谢谢。

标签: java jquery json spring spring-mvc


【解决方案1】:

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

data: JSON.stringify(jsonParameter)

【讨论】:

    猜你喜欢
    • 2015-10-31
    • 1970-01-01
    • 2013-02-05
    • 1970-01-01
    • 2013-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多