返回json格式数据乱码

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

      原本返回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向文本输出流打印对象的格式化表示形式。

原文地址:https://www.cnblogs.com/zjdxr-up/p/8108531.html