Spring json @ResponseBody - 返回一个命名变量

时间:2012-08-15 09:21:34

标签: json spring spring-mvc datatables

我有一个Spring控制器方法正确地将JSON中的对象集合返回给客户端:

@RequestMapping(value="/admin/rawreads/unknowntags", method=RequestMethod.GET)
public @ResponseBody Collection<RawRead> getRawReadsWithUnknownTag() {
    ....
}

我正在尝试集成一个名为DataTables的jQuery插件/插件。 DataTables可以处理异步请求以获取数据并为我填充页面中的表,但是它需要在具有特定名称“aaData”的数组中返回数据,而不是当前格式:

[{"oid":149452,"date":1233076733000,"readerId":"811210008","recordNo":226,"tagCode":"0103A003C0","reader":null,"guard":null,"checkpoint":null},{"oid":149453,"date":1233076734000,"readerId":"8112100 .... etc]

DataTable文档中DataTables的建议返回格式:

{
 "sEcho": 1,
 "iTotalRecords": "n",
 "iTotalDisplayRecords": "n",
 "aaData": [
 [object1][object2].... etc
 ]
}

如何更改我的Java方法以DataTables需要的格式返回数据 - 命名数组?

编辑: 尝试将vars放入HashMap服务器端,更接近我需要的东西:

{"iTotalDisplayRecords":3050,"iTotalRecords":3050,"aaData":   
  [{"oid":149452,"date":1233076733000, ...<snip>},{...}]
}

2 个答案:

答案 0 :(得分:2)

以正确的数据表格式创建一个单独的类,包含sEcho,itotalrecords,ittotaldisplayrecords的字段,然后是一个名为aaData的数组。

然后通过jason返回此课程,然后以您建议的格式返回。

class TableDTO
{
 int sEcho;
 int iTotalRecords;
 int itotalDisplayRecords;

 array[] aaData;
}

显然将数据分配给这些字段和适当的访问者等等!

答案 1 :(得分:1)

您必须再编写一个TotalDisplayRecords类,它必须包含数组oid类。之后,返回TotalDisplayRecords对象。