rss· 投稿· 设为首页· 加入收藏· 繁體版
当前位置: 火魔网 » 程序开发 » Json

net.sf.json.JSONException: java.lang.reflect.InvocationTargetException

今天在项目中使用了

PageGridUtil util = new PageGridUtil(request);

JsonConfig config = new JsonConfigBuilder().createJsonConfig(new String[] {});

JSONObject summaryJson = JSONObject.fromObject(vo);

JSONObject pageObj = new JSONObject();

pageObj.put("data1", summaryJson);

util.renderJSON(response, pageObj.toString());

来封装JSON对象

在封装对象JSONObject.fromObject(vo) 时发生了一下异常:

net.sf.json.JSONException: java.lang.reflect.InvocationTargetException
    net.sf.json.JSONObject._fromBean(JSONObject.java:959)  

网上查了一下,发现是:在hibernate配置文件中用到了:

<property name="shenqingriqi" type="date"></property>

可能问题一:

    JSON对象把date认为是java.sql.Date

解决方案:

把hibernate配置文件改为:

<property name="shenqingriqi" type="java.util.Date"></property>

这样应该就可以了。

可能问题二:

    在封装对象时有可能hibernate级联到了别的对象,使用到了延迟加载而导致了这个问题

解决方案:

PageGridUtil util = new PageGridUtil(request);

JsonConfig config = new JsonConfigBuilder().createJsonConfig(new String[] {"handler","hibernateLazyInitializer"});

JSONObject summaryJson = JSONObject.fromObject(vo, config);

JSONObject pageObj = new JSONObject();

pageObj.put("data1", summaryJson);

util.renderJSON(response, pageObj.toString());

顶一下
(0)
踩一下
(1)