将数据放入Datatable时,客户端上的JSONArray解析错误



我在服务器端有以下代码:

@RequestMapping(value="friendFamily/getFriendsByUserId", method=RequestMethod.GET,
        produces = "application/json")
public String getFriendsByUserId(@RequestParam("userId") Long userId){
//....
List<User> friendsList = (((ArrayList<Friends>)session.createCriteria(Friends.class).
                add(Restrictions.eq("person", user)).list()).get(0)).getFriends();
JSONArray array = new JSONArray();
for (User tempUser: friendsList){
    array.put(new JSONObject(tempUser));
}
return array.toString();

在客户端,我想将这些数据放入数据表:

$("#browseFriendsAndFamily").click(function(){
          var contPath='<%=request.getContextPath()%>';
          $.get(contPath + "/friendFamily/getFriendsByUserId",
              "userId="+loggedUser.id, function(friendsList){
                  $("#friendFamilyDialog").dialog("open");
                  friendsTable = $("#friendsTable").dataTable({
                      "bJQueryUI": true,
                       "aoColumnDefs": [ {"bVisible": false, "bSortable": false, "aTargets": [3]}],
                       "bSortClasses": false
                  });
                  familyTable = $("#familyTable").dataTable({
                      "bJQueryUI": true,
                      "aoColumnDefs": [ {"bVisible": false, "bSortable": false, "aTargets": [3]}],
                      "bSortClasses": false
                  });
                  for(var i=0, length=friendsList.length; i<length; i++){
                      friendsTable.fnAddData(friendsList[i].name, friendsList[i].surname,
                      friendsList[i].login, friendsList[i].id);
                      console.log(friendsList[i].login);
                  }     
               });                 
            });

但在数据表中,例如,如果我得到一个name="Paul"姓="Smith"login="Paul123"id="38"的人,它的行为就像它不理解它,就像一个JSON数组,但就像一个String数组,它把它放在名称列"p"、姓氏列"a"、登录列"u"中,用一个词来说,它认为它"不理解",那就是JSON,这对我来说有点奇怪。我做错了什么?如果我写:

console.log(friendsList[i].login)

我看到了正确的值,例如"Paul123"。如果有人帮我,我会很高兴的——提前谢谢你。

@更新:我现在看到了一点奇怪的行为——即使我这样做:

for(var i=0, length=friendsList.length; i<length; i++){
   var name = friendsList[i].name;
   var surname = friendsList[i].surname;
   var login = friendsList[i].login;
   var id = friendsList[i].id;
    friendsTable.fnAddData(name, surname,
         login, id);
   console.log(friendsList[i].surname);
}

它仍然以相同的方式运行。。。我在浏览器中看到变量值是正确的,但在数据表中,它的工作方式与以前相同,它在表的列中从变量名称中进一步放入"char"值(它将其视为"C字符串")。。。

@已回答。以下是Datatables论坛的解决方案->Datatables将String变量视为C字符串(char[])?(点击)

最新更新