datagride请求的数据中存在oracle的CLob类--解决方案

时间:2021-08-21 08:16:10

    在工作中遇到了一个datagride在请求后台数据时,后台传递过来的json数据中存在Clob类型的数值,rows=[{xxx=oracle.sql.CLOB@13f514..结果导致页面获取不到数据,通过google浏览器查看数据源的时候会发现页面报500错误。

   但是前端页面却需要这个字段,所以就要解决Clob类型的问题,所以想到了将json里的xxx字段里的信息取出来,然后通过一个将Clob类型转string类型的方法,

       //将Clob类型转为String类型,用于datagrid回显数据
    public String ClobToString(Clob clob) throws SQLException, IOException {
     
   String reString = "";
    Reader is = clob.getCharacterStream();// 得到流
    BufferedReader br = new BufferedReader(is);
    String s = br.readLine();
    StringBuffer sb = new StringBuffer();
    while (s != null) {// 执行循环将字符串全部取出付值给StringBuffer由StringBuffer转成STRING
     sb.append(s);
     s = br.readLine();
    }
    reString = sb.toString();
    return reString;
  }

将rows里的所有该字段进行转一遍,将转好后的rows替代原来的rows就可以在前端进行展示了。

List<Map> list = (List) paramMap.get("rows");
   for (Map map : list) {
    map.put("xxx", ClobToString((Clob)map.get("xxx")));
   }
   paramMap.put("rows", list);

 

注:上述代码仅为部分关键代码