将json对象中发布的一项映射到SpringMVC中的列表对象

将json对象中发布的一项映射到SpringMVC中的列表对象,json,spring,model-view-controller,list,Json,Spring,Model View Controller,List,我在SpringMVC控制器中发布json对象并将其映射到List对象时遇到了麻烦。我的表格有几个复选框。当用户检查并提交时,表单中的数据被反序列化,发送到SpringMVC控制器,并映射到列表类型对象。当用户选中两个或多个复选框时,它工作正常。但对于一个盒子来说,它不是 当用户检查两个或更多时,数据被反序列化,如下所示 {"users":["137","138"]} 然而,当用户只选中一个复选框时,它就像 {"users":"138"} 并返回400个错误请求错误 有什么解决办法吗 jQu

我在SpringMVC控制器中发布json对象并将其映射到List对象时遇到了麻烦。我的表格有几个复选框。当用户检查并提交时,表单中的数据被反序列化,发送到SpringMVC控制器,并映射到列表类型对象。当用户选中两个或多个复选框时,它工作正常。但对于一个盒子来说,它不是

当用户检查两个或更多时,数据被反序列化,如下所示

{"users":["137","138"]}
然而,当用户只选中一个复选框时,它就像

{"users":"138"}
并返回400个错误请求错误

有什么解决办法吗

jQuery代码是:

$(document).ready(function() {
    $('#groupusers').submit(function() {
    var users = $(this).serializeObject();
    $.postJSON("${context}/admin/groups/${group.seq}/users", users, function(result) {
        ...
    });
    return false;
});
表格为:

<form id="groupusers" method="post" accept-charset="UTF-8" action="/" class="edit_group">
  ...
  <div id="users">
    <c:forEach var="user" items="${users}">
      <label><input id="users" name="users" type="checkbox" value="${user.seq}" /> ${user.firstName} ${user.lastName}</label><br>
    </c:forEach>
  </div>
</form>
映射到表单数据的列表对象:

public class AssignedUsers {
  private List<Long> users;
  ...
}

提前感谢。

序列化对象函数的实现是什么?您可能需要修改它以始终返回数组,因此即使只选中一个框,对象也应该是:{users:[138]}

服务器返回400可能是因为Jackson at在后端抛出了一个解析异常

这是我找到的解决方案,而且我一直在使用它,它完全满足了您的要求

实例 HTML

输出

{
  data: ["some data", "more data"]
  users: [137]
}

序列化对象似乎来自json库。json.js我将研究该函数。谢谢你的回答。我只是想知道你是否能解决这个问题。我现在也有同样的问题。
$('#myForm').serializeObject();
{
  data: ["some data", "more data"]
  users: [137]
}