异步加载时不能返回Json数据 5C
后台代码:
/**
 * 返回数据用于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"}

请问如何解决 解决

14个回答

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

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

yehaoxuan52
yehaoxuan52 正解
2 年多之前 回复

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

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

qq_36481052
刘信晨 回复yechi9142:有 你可以写一个Json工具类, 也可以自己转JsonObject 就行了
2 年多之前 回复
yechi9142
yechi9142 有没有通过配置的办法直接将返回的对象转成Json格式
2 年多之前 回复

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

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

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

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

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

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

datatype: json qudiao

共14条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问