这个是类:         /** 主键 **/
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循环出来的数据$("#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:2name:日程管理,id:5
name:我的便签,id:7name:我的日程,id:6name:部门日程,id:8name:文档管理,id:9
name:文档管理,id:12name:文件搜索,id:10name:回收站,id:11name:消息传递,id:13
name:消息传递,id:15name:邮箱,id:14name:系统管理,id:16
name:菜单排序,id:19name:角色管理,id:17name:登陆日志,id:20name:操作日志,id:18name:考勤管理,id:21
name:考勤历史记录,id:24name:考勤统计,id:23name:员工签到、签退,id:22
{"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的配置。。哪里错了吗?@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的name:人事管理,id:1
name:部门信息,id:2name:机构信息,id:3name:员工管理,id:4name:日程管理,id:5
name:我的日程,id:6name:部门日程,id:8name:我的便签,id:7name:文档管理,id:9
name:回收站,id:11name:文档管理,id:12name:文件搜索,id:10name:消息传递,id:13
name:消息传递,id:15name:邮箱,id:14name:系统管理,id:16
name:操作日志,id:18name:角色管理,id:17name:菜单排序,id:19name:登陆日志,id:20name:考勤管理,id:21
name:考勤统计,id:23name:员工签到、签退,id:22name:考勤历史记录,id:24这个是Chrome的name:人事管理,id:1
name:部门信息,id:2name:员工管理,id:4name:机构信息,id:3name:日程管理,id:5
name:部门日程,id:8name:我的日程,id:6name:我的便签,id:7name:文档管理,id:9
name:文件搜索,id:10name:回收站,id:11name:文档管理,id:12name:消息传递,id:13
name:邮箱,id:14name:消息传递,id:15name:系统管理,id:16
name:登陆日志,id:20name:菜单排序,id:19name:操作日志,id:18name:角色管理,id:17name:考勤管理,id:21
name:考勤历史记录,id:24name:员工签到、签退,id:22name:考勤统计,id:23

解决方案 »

  1.   

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

  2.   

    Json无序? 设定的时候怎么样不就是怎么样子的?
    刚刚又看了一下算法 万恶的!! 居然是Hibernate的实体类定义问题。。 定义的时候用set用顺手了。。就给他了一个set  之后就是悲剧了之后换成list这个有序的链表,,再自己写了一个方法用来吧实体类转换Json(自连表,不然查询数据库会死人)终于可以了  OK了,,, 
      

  3.   

    Gson 看了一下  似乎也不错~~ 不过还是自连表,, Gson不知道行不行~~之后试试! 3Q