当前位置: 代码迷 >> J2EE >> json报错是咋回事
  详细解决方案

json报错是咋回事

热度:49   发布时间:2016-04-19 22:54:53.0
json报错是怎么回事?
 环境:jdk1.6    MyEclipse 8.6 for spring
今年寻思着研究下json但是不想居然出现这个。。请大神指点。。

servlet代码:

response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
request.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
List<User> users=new ArrayList<User>();
User u1=new User("张三", 12);
User u2=new User("小美", 15);
users.add(u1);
users.add(u2);
JSONArray json=JSONArray.fromObject(users);
out.write(json.toString());
out.close();


jar  :json-lib-2.2.2-jdk15.jar

错误:

net.sf.json.JSONExceptionjava.lang.SecurityException: class "org.apache.commons.collections.FastHashMap"'s signer information does not match signer information of other classes in the same package
at net.sf.json.JSONObject._fromBean(JSONObject.java:953)
at net.sf.json.JSONObject.fromObject(JSONObject.java:192)
at net.sf.json.JSONArray._processValue(JSONArray.java:2557)
at net.sf.json.JSONArray.processValue(JSONArray.java:2588)
at net.sf.json.JSONArray.addValue(JSONArray.java:2575)
at net.sf.json.JSONArray._fromCollection(JSONArray.java:1082)
at net.sf.json.JSONArray.fromObject(JSONArray.java:145)
at net.sf.json.JSONArray.fromObject(JSONArray.java:127)
at servlet.JsonAjax.doGet(JsonAjax.java:38)
at servlet.JsonAjax.doPost(JsonAjax.java:55)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.SecurityException: class "org.apache.commons.collections.FastHashMap"'s signer information does not match signer information of other classes in the same package
at java.lang.ClassLoader.checkCerts(ClassLoader.java:776)
at java.lang.ClassLoader.preDefineClass(ClassLoader.java:488)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2818)
at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1159)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1647)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at org.apache.commons.beanutils.ConvertUtilsBean.<init>(ConvertUtilsBean.java:125)
at org.apache.commons.beanutils.BeanUtilsBean.<init>(BeanUtilsBean.java:110)
at org.apache.commons.beanutils.BeanUtilsBean$1.initialValue(BeanUtilsBean.java:68)
at org.apache.commons.beanutils.ContextClassLoaderLocal.get(ContextClassLoaderLocal.java:91)
at org.apache.commons.beanutils.BeanUtilsBean.getInstance(BeanUtilsBean.java:78)
at org.apache.commons.beanutils.PropertyUtilsBean.getInstance(PropertyUtilsBean.java:101)
at org.apache.commons.beanutils.PropertyUtils.getPropertyDescriptors(PropertyUtils.java:342)
at net.sf.json.JSONObject._fromBean(JSONObject.java:901)

------解决方案--------------------
引用:
Quote: 引用:

jar有重复的吧,你想用的是这个,但是加载的确实另外一个jar的,因为他们路径都一样。删除重复的。


jar已经弄好了。。想请教个问题。。

$.ajax({
   type:"post", //请求方式
   url:"http://localhost:8080/Ajax/JsonAjax", //发送请求地址
   //请求成功后的回调函数有两个参数
   success:function(data,textStatus){
    var jsonObj = eval(data);
    for(var o in jsonObj){
    alert(jsonObj[o].name+"今年"+jsonObj[o].age+"岁!!!");
    }

   }

});


现在json里的数据是:[{"age":12,"name":"张三"},{"age":15,"name":"小美"}]
我想问怎么把它显示在:$("#display").html()里面呢?两条数据都要显示。。

for(var i=0;i<jsonObj.length;i++){
    $("#display").html(jsonObj[i].name+"今年"+jsonObj[i].age+"岁!!!<br/>");
  相关解决方案