最近自己在弄一个项目,android+struts2。通过HttpClient向server获取json格式数据,原本通过struts2是可以自动把bean转化为json string,但是有一个问题,就是它会把action中定义的所有的变量(包括实例化的bean类)都会转化成json string,这样一来就会传递很多垃圾数据。所以我想自己定义JSONObject,却发现在实例化JSONObject的时候,JSONObject json=new JSONObject();或者JSONObject.fromObject(***);就被卡住了,也不报错。关于json 的操作以前的项目中我常用啊,现在怎么就不行了呢?百度了半天,也没有查出结果,大部分都说,JSONObject不光是依赖于json-lib-2.4-jdk15.jar包,还需要另外几个struts2中的几个包,这个在网上都有。事实上是这些个jar包我都有,但问题依旧。
结果在一个不太起眼的很短的一篇博客中说了一句话,大意是:貌似common-lang3.3.1.jar和json-lib.jar 2.0版本以上的不兼容。我尝试把common-lang.jar换回2.4版,问题解决。原来果真是有问题!
ps:因为struts2的安全漏洞,没想太多把所有包都更新了, 但是最新的struts2.3.13.3中依然是common-lang3.3.1.jar json-lib-2.3-jdk15.jar,所有要用到JSONObject的小伙伴们要注意了!