读书人

Struts2 获取Json 乱序有关问题

发布时间: 2012-03-30 17:32:09 作者: rapoo

求助,Struts2 获取Json 乱序问题!
这个是类:

Java code
         /**    主键    **/    private Integer id;    /**    名称    **/    private String name;    /**    节点的链接地址    **/    private String url;    /**    节点的显示位置    **/    private int position;    /**    节点的父亲节点    **/    private MenuNode parentNode;    /**    子节点    **/    private Set<MenuNode> childNodes = new HashSet<MenuNode>();

这个是我后台数据库查出来之后排序的数据:

人事管理 : 机构信息 员工管理 部门信息
日程管理 : 部门日程 我的便签 我的日程
文档管理 : 文档管理 文件搜索 回收站
消息传递 : 邮箱 消息传递
系统管理 : 登陆日志 菜单排序 操作日志 角色管理
考勤管理 : 考勤历史记录 员工签到、签退 考勤统计
****************************************************

人事管理这类的是父类 冒号之后的是前一个父类的子类

Java后台没有问题~ 之后Json传递过去的时候出问题了 顺序完全乱了!

这个是前台用Jquery循环出来的数据
JScript code
$("#testdiv").append("name:"+item.name+",id:"+item.id).append("<br/>");                                         $.each(item.childNodes,function(id,childNode){                            $("#testdiv").append("name:"+childNode.name+",id:"+childNode.id);                     });                    $("#testdiv").append("<br/><br/>");                 }); 


name:人事管理,id:1
name:机构信息,id:3name:员工管理,id:4name:部门信息,id:2

name:日程管理,id:5
name:我的便签,id:7name:我的日程,id:6name:部门日程,id:8

name:文档管理,id:9
name:文档管理,id:12name:文件搜索,id:10name:回收站,id:11

name:消息传递,id:13
name:消息传递,id:15name:邮箱,id:14

name:系统管理,id:16
name:菜单排序,id:19name:角色管理,id:17name:登陆日志,id:20name:操作日志,id:18

name:考勤管理,id:21
name:考勤历史记录,id:24name:考勤统计,id:23name:员工签到、签退,id:22



HTML code
{"menuNodes":[{"childNodes":[{"childNodes":[],"id":3,"name":"机构信息","parentNode":null,"position":1,"url":null},{"childNodes":[],"id":4,"name":"员工管理","parentNode":null,"position":3,"url":null},{"childNodes":[],"id":2,"name":"部门信息","parentNode":null,"position":2,"url":null}],"id":1,"name":"人事管理","parentNode":null,"position":1,"url":null},{"childNodes":[{"childNodes":[],"id":8,"name":"部门日程","parentNode":null,"position":2,"url":null},{"childNodes":[],"id":7,"name":"我的便签","parentNode":null,"position":3,"url":null},{"childNodes":[],"id":6,"name":"我的日程","parentNode":null,"position":1,"url":null}],"id":5,"name":"日程管理","parentNode":null,"position":2,"url":null},{"childNodes":[{"childNodes":[],"id":12,"name":"文档管理","parentNode":null,"position":1,"url":null},{"childNodes":[],"id":10,"name":"文件搜索","parentNode":null,"position":3,"url":null},{"childNodes":[],"id":11,"name":"回收站","parentNode":null,"position":2,"url":null}],"id":9,"name":"文档管理","parentNode":null,"position":3,"url":null},{"childNodes":[{"childNodes":[],"id":14,"name":"邮箱","parentNode":null,"position":2,"url":null},{"childNodes":[],"id":15,"name":"消息传递","parentNode":null,"position":1,"url":null}],"id":13,"name":"消息传递","parentNode":null,"position":4,"url":null},{"childNodes":[{"childNodes":[],"id":20,"name":"登陆日志","parentNode":null,"position":2,"url":null},{"childNodes":[],"id":19,"name":"菜单排序","parentNode":null,"position":4,"url":null},{"childNodes":[],"id":18,"name":"操作日志","parentNode":null,"position":3,"url":null},{"childNodes":[],"id":17,"name":"角色管理","parentNode":null,"position":1,"url":null}],"id":16,"name":"系统管理","parentNode":null,"position":5,"url":null},{"childNodes":[{"childNodes":[],"id":24,"name":"考勤历史记录","parentNode":null,"position":2,"url":null},{"childNodes":[],"id":22,"name":"员工签到、签退","parentNode":null,"position":1,"url":null},{"childNodes":[],"id":23,"name":"考勤统计","parentNode":null,"position":3,"url":null}],"id":21,"name":"考勤管理","parentNode":null,"position":6,"url":null}]} 



这个是Action的配置。。哪里错了吗?
Java code
@Controller @ParentPackage("json-default")@Result(type="json")@Namespace("/sysmanage")@Scope(value="prototype")public class ListMenuAction extends @Action(value="munuList",results=@Result(type="json"))    public String Menulist(){        menuNodes = menuNodeService.getMenuNodes();        return SUCCESS;    }


而且最万恶的是!两个返回的Json排序的结果!Chrome和IE9 居然不一样!彻底晕头了
这个是IE的
HTML code
name:人事管理,id:1name:部门信息,id:2name:机构信息,id:3name:员工管理,id:4name:日程管理,id:5name:我的日程,id:6name:部门日程,id:8name:我的便签,id:7name:文档管理,id:9name:回收站,id:11name:文档管理,id:12name:文件搜索,id:10name:消息传递,id:13name:消息传递,id:15name:邮箱,id:14name:系统管理,id:16name:操作日志,id:18name:角色管理,id:17name:菜单排序,id:19name:登陆日志,id:20name:考勤管理,id:21name:考勤统计,id:23name:员工签到、签退,id:22name:考勤历史记录,id:24


这个是Chrome的
HTML code
name:人事管理,id:1name:部门信息,id:2name:员工管理,id:4name:机构信息,id:3name:日程管理,id:5name:部门日程,id:8name:我的日程,id:6name:我的便签,id:7name:文档管理,id:9name:文件搜索,id:10name:回收站,id:11name:文档管理,id:12name:消息传递,id:13name:邮箱,id:14name:消息传递,id:15name:系统管理,id:16name:登陆日志,id:20name:菜单排序,id:19name:操作日志,id:18name:角色管理,id:17name:考勤管理,id:21name:考勤历史记录,id:24name:员工签到、签退,id:22name:考勤统计,id:23


[解决办法]
json本来就是无序的
你可以直接用String传送
告诉你一个好用的工具叫Gson

读书人网 >J2EE开发

热点推荐