jialisoftw

Servlet传多个JSON变量(Java)

通过Java servlet处理前台页面JS发出的请求,为了和JS兼容通常把Java变量转化成JSON再传递给前台的JS进行处理。例如在servlet中:
ArrayList tempList = new ArrayList();
tempList.add("a");
tempList.add("b");
JSONArray jsonArray = JSONArray.fromObject(tempList);
PrintWriter pw = response.getWriter();
pw.write( jsonArray.toString() );
这样就可以把tempList转换成json格式发给前台JS处理。
如果要同时传递多个变量,可以自定义类存放N个属性,放到ArrayList中转换成jsonArray再传过去,也可自己定义数据结构。但是对于逻辑、数据结构均不同的变量,确实要分开传递。例如想要再传递一个哈希Map:
Map clusterMap = new HashMap();
clusterMap.put("cluster", "a");
JSONObject jsonObject = JSONObject.fromObject(clusterMap);
注意JSON要求键值must be strings,因此所传的Map的键值要为String类型
再write一下pw.write( jsonArray.toString() );
实际上如果这样做的话JS并不能获取到传递的变量,即使再加一层Map设定这些变量的键值,JS再通过键获得这些变量也会出问题(不知道简单的变量有没问题,没试过,但我用的时候就只能获得第一个数据)。
考虑到json格式的本质是数组,将转换后的变量再用数组格式进行连接,再传过去,就OK了。例如:
String r = "["+jsonArray.toString()+","+jsonObject2.toString()+"]";
PrintWriter pw2 = response.getWriter();
pw2.write(r);
这样,JS通过获取第0个数组就可以获得tempList,第1个数组获得clusterMap

posted on 2012-10-18 10:51 飞猪一号 阅读(2447) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 

导航

<2012年10月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

统计

常用链接

留言簿

随笔档案

友情链接

搜索

最新评论

阅读排行榜

评论排行榜