在工作中遇到了一个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);
注:上述代码仅为部分关键代码