一开始就写了一个简单的例子,来测试struts2+json,是没有问题的。但是后来,加入正式的项目中就出现问题,而后开始研究了一下!
主要出错类型(部分代码):
com.googlecode.jsonplugin.JSONException: com.googlecode.jsonplugin.JSONException: java.lang.reflect.InvocationTargetException
com.googlecode.jsonplugin.JSONWriter.bean(JSONWriter.java:239)
com.googlecode.jsonplugin.JSONWriter.process(JSONWriter.java:161)
com.googlecode.jsonplugin.JSONWriter.value(JSONWriter.java:127)
出现这个问题是某属性通过串行化json数据异常。可能你不懂了,意思是这样的,struts2的action里面的数据转换成json数据时是 将提供了getter的属性都统统串行化输出JSON到客户端。有的时候,很多属性并不一定要串行化成json数据。比如:使用的spring注入属性 recordService,也就是提供了getter和setter!
所以解决这个异常方法就是在不需要串行化的属性的getter前加上annotation,
就是@JSON(serialize=false)
或者 不写属性 recordService getter 方法