先把需要的包加进来,在上篇里
下面是实现代码,先记录下
try{ Map<String,Object> map = new HashMap<String,Object>(); map.put("name","jj"); map.put("age","22"); JSONObject json = JSONObject.fromObject(map);//将map对象转换成json类型数据 this.user = json.toString();//给user赋值,传递给页面 }catch(Exception e){ e.printstacktrace(); } return SUCCESS;
if(xmlhttp.readyState==4&&xmlhttp.status==200) { alert("完成请求:"+xmlhttp.responseText); var text = xmlhttp.responseText ; var jsonObj = eval("("+xmlhttp.responseText+")"); //第一次解析得到user对象 // alert("jsonObj[0] "+jsonObj[0]); alert("jsonObj.user "+jsonObj.user); // alert("jsonObj.user.age "+jsonObj.user.age); //这样不能访问到,为什么 // alert("jsonObj.length "+jsonObj.length); alert("jsonObj.user.length "+jsonObj.user.length); alert("jsonObj.user[0] "+jsonObj.user[0]); alert("jsonObj.user[1] "+jsonObj.user[1]); alert("jsonObj.user[2] "+jsonObj.user[2]); alert("jsonObj.user[3] "+jsonObj.user[3]); var user = eval("("+jsonObj.user+")"); //再一次解析,得到user对象的json数据 alert("user "+user); alert("user.name "+user.name); //这样能访问到了 ,真是奇怪 alert("user.age "+user.age); }这里不知道为什么传过来的json数据要经过两次 eval( ) 解析才可以读出来,弄了一下午,网上都 是jquery的实现,感觉用这个的很少,几乎没有,
这里我传了个json字符串给ajax,然后解析出来,可以得到user对象,即 jsonObj.user
但是奇怪的是 jsonObj.user.name 或者jsonObj.user.age是没有定义的空值,
后面调试过程中(可以通过输出 jsonObj.user[0],jsonObj.user[1] ,等发现 jsonObj.user 是一个字符串对象,而不是json数据对象 )发现 jsonObj.user 是一个字符串,并不是json数据 ,这是为什么呢??? 后面对jsonObj.user进行eval() 操作后,就可以按json数据格式访问了 !尼玛??为什么??
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。