本文为博主原创,未经允许不得转载:

      原本返回json格式数据的代码:

@ResponseBody
@RequestMapping(value = "getListByTime", method = { RequestMethod.POST, RequestMethod.GET })
public String getListByTime(@RequestParam String aoData,String sEcho,HttpServletRequest request) throws Exception {

AoData paramAoData = new AoData(aoData);

Detail cameraDetail = new Detail ();
detail.setDisplatStart(paramAoData.getiDisplayStart());
detail.setDisplayLength(paramAoData.getiDisplayLength());
List<Detail> list = dataService.getListByTime(detail);
int size = list.size();
String[][] data = new String[size][];
for (int i = 0; i < size; i++) {
Detail info = list.get(i);
data[i] = info.values();

}
int total = dataService.getCameraByTimeTotal(detail);

return JSonUtils.toJSon(new DataTableReturnObject(total, total, sEcho, data));
}

以上代码断点从数据库中查询的数据没有乱码,但在前台接收的时候乱码。

解决方法:

@ResponseBody
@RequestMapping(value = "getListByTime", method = { RequestMethod.POST, RequestMethod.GET })
public void getListByTime(@RequestParam String aoData,String sEcho,HttpServletRequest request) throws Exception {

AoData paramAoData = new AoData(aoData);

Detail cameraDetail = new Detail ();
detail.setDisplatStart(paramAoData.getiDisplayStart());
detail.setDisplayLength(paramAoData.getiDisplayLength());
List<Detail> list = dataService.getListByTime(detail);
int size = list.size();
String[][] data = new String[size][];
for (int i = 0; i < size; i++) {
Detail info = list.get(i);
data[i] = info.values();

}
int total = dataService.getCameraByTimeTotal(detail);

PrintWriter out = null;
try
{
String result = JSonUtils.toJSon();
out = response.getWriter();
out.print(result);
out.flush();
}
catch (Exception e) {
LOG.error("error",e);
}
finally
{
if (out != null) {
out.close();
}
}
}

解决方案为:将对象通过流的形式进行传输给前台,​PrintWriter​向文本输出流打印对象的格式化表示形式。