异步加载时不能返回Json数据

后台代码:
/**
 * 返回数据用于zTree控件树状图显示
 * @return
 */

@ResponseBody
@RequestMapping("getMenuJson")
public List<Map<Object,Object>>  getJson(){
    List<Menu> list=menuService.findList();
    List<Map<Object,Object>>mapList= new ArrayList<>();
    for(int i=0;i<list.size();i++){
        Map <Object,Object> map= new HashMap<Object,Object>();
        map.put("id", list.get(i).getId());
        map.put("name", list.get(i).getName());
        map.put("pId", list.get(i).getParentId());
        map.put("url", list.get(i).getUrl());
        map.put("target", "_blank");
        mapList.add(map);
    }
    System.out.println("异步加载数据成功");
    return mapList;
}

前台代码:

/**************异步加载数据************/
var setting4 = {
async: {
enable: true,
contentType: "application/json",
url:"${ctx}/a/menu/getMenuJson",
/* autoParam:["id", "name=", "level=lv"], */
otherParam:{"otherParam":"zTreeAsyncTest"},
dataFilter: filter
}

    };

function filter(treeId, parentNode, childNodes) {
if (!childNodes) return null;
for (var i=0, l=childNodes.length; i<l; i++) {
childNodes[i].name = childNodes[i].name.replace(/.n/g, '.');/* 把回车换成. */
}

console.log(childNodes);
return childNodes;
}

$(document).ready(function(){
zTreeObj = $.fn.zTree.init($("#treeDemo1"), setting4);
});

使用了SpringMVC框架,此处使用zTree插件来异步加载Menu树状菜单,但是获取到的数据为数组格式,如下:
Array(9)
0
:
{name: "新建菜单", pId: 5, id: 3, url: "/a/menu/add", target: "_blank"}
1
:
{name: "菜单列表", pId: 5, id: 4, url: "/a/menu/list", target: "_blank"}
2
:
{name: "菜单管理", pId: 0, id: 5, url: "/a/menu/", target: "_blank"}
3
:
{name: "人员管理", pId: 0, id: 6, url: "/a/user/", target: "_blank"}
4
:
{name: "人员添加", pId: 6, id: 7, url: "/a/user/add", target: "_blank"}
5
:
{name: "人员列表", pId: 6, id: 8, url: "/a/user/list", target: "_blank"}
6
:
{name: "修改密码", pId: 6, id: 9, url: "/a/user/changePW", target: "_blank"}
7
:
{name: "人员添加1", pId: 7, id: 10, url: "#", target: "_blank"}
8
:
{name: "人员添加2", pId: 7, id: 11, url: "#", target: "_blank"}

请问如何解决 解决

直接循环去 “data.name”“data.pId”"data.url"

楼主返回的是List< Map < Object,Object > > 到前台页面就是数组啊!啥问题啊? 树是自己排好的吧?

写一个映射类entity 把数据存入这个对象的list,前台直接获取list不就行了吗...前台要[{}]这样的话 后台@ResponseBody 不就直接返回了吗

如果你是需要这一层的key刚好是下一层的value这种形式,就需要自己后台组装一下,现在这样先通过数组下标取到相应对象,在点属性名也可以取到数据了

没看明白,你是想要什么格式?这个格式不正是zTree的数据格式吗?

@ResponseBody
.........
public String xxxx(){
.......
return "json串";
}

你的list对象不想自己封装json,可以找个三方jar包,直接转换

用jquery的ajax 可以很方便获取数据,后端使用springMVC的吗?

是使用用jquery的ajax 获取数据,后端使用springMVC的吗?

datatype: json qudiao

没有转为json呀,返回的是数组。

var json = eval(xxx)转换下

json和string才是传输的数据的正确格式,其他的容易接受不到;实际啊根本没法接受;

你别直接返回集合了,你先把集合转成json,看看格式是否正确,在返回到页面

1.楼主树的初始化方法不对

 zTreeObj = $.fn.zTree.init($("#treeDemo1"), setting4, zTreeNodes);

zTreeNodes是指树形上的节点,楼主都没有传递该参数
2.获取到的数据格式应该是可以直接使用的,因为返回的是数组,内部符合json格式
但形成树需要设置setting4 为简单数据格式,setting4 中添加

 data : {
        simpleData : {
            enable : true
        }
    }