我在前台使用json数据时遇见了问题,现在请大家帮忙看看。
action中我把一个对象转为json格式,用responsewrite写到前台的代码如下:
ChartPageInfo info = chartInfoHelper(alist,"1",f);
JSONArray ja = JSONArray.fromObject(info);
System.out.println(ja);//打印出的数据是:[{"categories":"['政务内网门户','电子邮件系统','综合办公平台','通讯录']","data":"[11,4,34,19]","title_text":""}]
responseWrite(ja.toString());
前台使用代码如下:
$.post("queryuserchart.action",{
curPage:$(this).val()
},
function(data,status){
alert(data.categories);//undefine
if('success'==status){
drawChart(data.categories,data.data);
}
},
"json"
);
alert data.categories为undefine.
JSON
------解决方案--------------------
对了,你返回的是一个json数组,不能直接取属性,需要在循环中获取!
------解决方案--------------------
JSONArray对应的是JSON数组,后台使用JSONObject.fromObject()。
------解决方案--------------------
//json 中 "[]"代表数据 "{}" 代表对象 两者可以相互嵌套
//访问json数据时、也是根据[]跟{}来判断的
//[]开头、那么就要加上下标访问
jsonStr = [{"categories":"['政务内网门户','电子邮件系统','综合办公平台','通讯录']","data":"[11,4,34,19]","title_text":""}];
alert(jsonStr[0].categories);
for(var i = 0; i < jsonStr.length; i++){
var jsonS = jsonStr[i];
alert(jsonS.categories);
}
//如果你没有更多的对象了、那么把外面的“[]”去掉就可以直接访问对象了
jsonStr2 = {"categories":"['政务内网门户','电子邮件系统','综合办公平台','通讯录']","data":"[11,4,34,19]","title_text":""};
alert(jsonStr2.data);
------解决方案--------------------