针对进行补充,上一篇中,要在action中拼接JSON格式字符串,很容易手抖。直接用json处理一下转成json格式字符串即可。但之前也讲过,json对于hibernate级联关系的解析,不是很到位啊!
所以ajax那边就得层层循环剥离,找出想要的结果
action:
用的是
import com.alibaba.fastjson.JSON;
具体的jar包请自行百度!!
public String getStreets(){ StreetDao streetDao=new StreetDaoImpl(); try { streetlist = streetDao.getStreetsByDistrictId(Integer.parseInt(district_id)); /*System.out.println("district_id=="+district_id); System.out.println(streetlist.size());*/ String content = JSON.toJSONString(streetlist); /*ObjectMapper mapper = new ObjectMapper(); String content = mapper.writeValueAsString(streetlist);*/ HttpServletResponse response = (HttpServletResponse) ActionContext.getContext().get(ServletActionContext.HTTP_RESPONSE); response.setCharacterEncoding("utf-8"); System.out.println("array======="+content); response.getWriter().print(content); } catch (Exception e) { e.printStackTrace(); } return null; }
action只是小小的改动,但语法简单了很多。
出来的json结果是:
array=======[{"district":{"id":1,"name":"天河区","streets":[{"district":{"$ref":"$[0].district"},"id":4,"name":"天河区街道4"},{"district":{"$ref":"$[0].district"},"id":2,"name":"天河区街道2"},{"$ref":"$[0]"},{"district":{"$ref":"$[0].district"},"id":3,"name":"天河区街道3"}]},"id":1,"name":"天河区街道1"},{"$ref":"$[0].district.streets[1]"},{"$ref":"$[0].district.streets[3]"},{"$ref":"$[0].district.streets[0]"}]
看上去真是头疼,即使json格式清晰要想取streets的id和name也不很规律啊,我用了firefox的hj插件JSON-Handle格式化了一下控制台的json字符串
[ { "district": { "id": 1, "name": "天河区", "streets": [ { "district": { "$ref": "$[0].district" }, "id": 4, "name": "天河区街道4" }, { "district": { "$ref": "$[0].district" }, "id": 2, "name": "天河区街道2" }, { "$ref": "$[0]" }, { "district": { "$ref": "$[0].district" }, "id": 3, "name": "天河区街道3" } ] }, "id": 1, "name": "天河区街道1" }, { "$ref": "$[0].district.streets[1]" }, { "$ref": "$[0].district.streets[3]" }, { "$ref": "$[0].district.streets[0]" }]
那么ajax怎么获取街道呢?
好吧,我也是一点点试的!不行就每一步alert呗!