框架: hibernate3
转换json类库:net.sf.json
在使用以下方法转换json时,报错java.lang.reflect.InvocationTargetException
JSONArray.fromObject(list);
debug后发现只有list中有的对象是hibernate懒加载对象的时候,就会出该问题。hibernate的懒加载对象,在转换json时,会访问到其字段,此时又会去数据库查询获取相关字段。在debug中也看得到涉及到了jdbc等对象,导致出了该问题。
上网参考到有如下处理方式:
JsonConfig jc = new JsonConfig();
jc.registerJsonValueProcessor(Date.class, SysCommon.DATE_JSON_PROCESSOR_YMD);
//防止转换hibernate懒加载对象出问题
jc.setExcludes(new String[]{"handler","hibernateLazyInitializer"});
JSONArray.fromObject(tss, jc);
后面会再找下有没有其他解决方法。