Javascript 如何从json文件创建菜单
我的任务是从json对象创建一个水平菜单Javascript 如何从json文件创建菜单,javascript,jquery,html,css,json,Javascript,Jquery,Html,Css,Json,我的任务是从json对象创建一个水平菜单 var data = [ { "menu":[ { "MenuId":1, "MenuName":"Home", "MenuLink":null, "Action":null, "Controller":null, "ParentID":null, "SortOr
var data = [
{
"menu":[
{
"MenuId":1,
"MenuName":"Home",
"MenuLink":null,
"Action":null,
"Controller":null,
"ParentID":null,
"SortOrder":1,
"ModuleId":null,
"Menus":{
}
},
{
"MenuId":2,
"MenuName":"New Transaction",
"MenuLink":null,
"Action":null,
"Controller":null,
"ParentID":null,
"SortOrder":2,
"ModuleId":null,
"Menus":{
}
},
{
"MenuId":3,
"MenuName":"Portfolio",
"MenuLink":null,
"Action":null,
"Controller":null,
"ParentID":null,
"SortOrder":3,
"ModuleId":null,
"Menus":{
}
},
{
"MenuId":4,
"MenuName":"Analytics",
"MenuLink":null,
"Action":null,
"Controller":null,
"ParentID":null,
"SortOrder":4,
"ModuleId":null,
"Menus":{
}
},
{
"MenuId":5,
"MenuName":"Instructions",
"MenuLink":null,
"Action":null,
"Controller":null,
"ParentID":null,
"SortOrder":5,
"ModuleId":null,
"Menus":{
}
},
{
"MenuId":6,
"MenuName":"Data Upload",
"MenuLink":null,
"Action":null,
"Controller":null,
"ParentID":null,
"SortOrder":6,
"ModuleId":null,
"Menus":{
}
},
{
"MenuId":7,
"MenuName":"Administration",
"MenuLink":null,
"Action":null,
"Controller":null,
"ParentID":null,
"SortOrder":7,
"ModuleId":null,
"Menus":[
{
"MenuId":8,
"MenuName":"Masters",
"MenuLink":null,
"Action":null,
"Controller":null,
"ParentID":7,
"SortOrder":1,
"ModuleId":null,
"Menus":[
{
"MenuId":10,
"MenuName":"Currency",
"MenuLink":"/Currencies/Index",
"Action":"Index",
"Controller":"Currencies",
"ParentID":8,
"SortOrder":1,
"ModuleId":null,
"Menus":{
}
},
{
"MenuId":11,
"MenuName":"Country",
"MenuLink":"/Countries/Index",
"Action":"Index",
"Controller":"Countries",
"ParentID":8,
"SortOrder":2,
"ModuleId":null,
"Menus":{
}
}
]
},
{
"MenuId":9,
"MenuName":"User Management",
"MenuLink":null,
"Action":null,
"Controller":null,
"ParentID":7,
"SortOrder":2,
"ModuleId":null,
"Menus":{
}
}
]
}
]
}
];
如何从这个json文件创建水平菜单?请帮助我为这个json数据编写javascript。我在这里创建了一个示例遍历数据:
var a = data[0].menu;
for(var i = 0; i < a.length; i++){
// Create menu components here
var menuId = a[i].MenuId;
// ...
}
var a=data[0]。菜单;
对于(变量i=0;i
我想说,像这样用jquery试试
var Data = // your json object .
var x = eval('('+Data+')');
$.each(x,function(entryIndex, entry){
var menuId = entry['menu']['menuId'];
// and so on all the elements .
});
我不知道这对你是否有用。但值得一试。举个简单的例子:
var数据=[{
“菜单”:[
{
“MenuId”:1,
“Menuame”:“家”,
“MenuLink”:空,
“动作”:空,
“控制器”:空,
“ParentID”:空,
“巫师”:1,
“ModuleId”:空,
“菜单”:{
}
},
{
“MenuId”:2,
“Menuame”:“新交易”,
“MenuLink”:空,
“动作”:空,
“控制器”:空,
“ParentID”:空,
“巫师”:2,
“ModuleId”:空,
“菜单”:{
}
},
{
“MenuId”:3,
“Menuame”:“投资组合”,
“MenuLink”:空,
“动作”:空,
“控制器”:空,
“ParentID”:空,
“巫师”:3,
“ModuleId”:空,
“菜单”:{
}
},
{
“MenuId”:4,
“Menuame”:“分析”,
“MenuLink”:空,
“动作”:空,
“控制器”:空,
“ParentID”:空,
“巫师”:4,
“ModuleId”:空,
“菜单”:{
}
},
{
“MenuId”:5,
“菜单名”:“说明”,
“MenuLink”:空,
“动作”:空,
“控制器”:空,
“ParentID”:空,
“巫师”:5,
“ModuleId”:空,
“菜单”:{
}
},
{
“MenuId”:6,
“菜单名”:“数据上传”,
“MenuLink”:空,
“动作”:空,
“控制器”:空,
“ParentID”:空,
“巫师”:6,
“ModuleId”:空,
“菜单”:{
}
},
{
“MenuId”:7,
“Menuame”:“管理”,
“MenuLink”:空,
“动作”:空,
“控制器”:空,
“ParentID”:空,
“巫师”:7,
“ModuleId”:空,
“菜单”:[
{
“MenuId”:8,
“梅努梅”:“大师”,
“MenuLink”:空,
“动作”:空,
“控制器”:空,
“家长ID”:7,
“巫师”:1,
“ModuleId”:空,
“菜单”:[
{
“MenuId”:10,
“货币”:“货币”,
“MenuLink”:“/货币/指数”,
“行动”:“索引”,
“控制员”:“货币”,
“家长ID”:8,
“巫师”:1,
“ModuleId”:空,
“菜单”:{
}
},
{
“MenuId”:11,
“Menuame”:“国家”,
“MenuLink”:“/国家/指数”,
“行动”:“索引”,
“控制员”:“国家”,
“家长ID”:8,
“巫师”:2,
“ModuleId”:空,
“菜单”:{
}
}
]
},
{
“MenuId”:9,
“菜单名”:“用户管理”,
“MenuLink”:空,
“动作”:空,
“控制器”:空,
“家长ID”:7,
“巫师”:2,
“ModuleId”:空,
“菜单”:{
}
}
]
}
]
}
];
对于(变量i=0,j=data[0].menu.length;i 0){
$(“#menu”).append(“Menus:{};
。。看起来您在JSFIDLE示例中已经有了一个解决方案。另外,我认为您上面的代码在技术上不是JSON,而是一堆嵌套的数组和对象
var data = [{
"menu":[
{
"MenuId":1,
"MenuName":"Home",
"MenuLink":null,
"Action":null,
"Controller":null,
"ParentID":null,
"SortOrder":1,
"ModuleId":null,
"Menus":{
}
},
{
"MenuId":2,
"MenuName":"New Transaction",
"MenuLink":null,
"Action":null,
"Controller":null,
"ParentID":null,
"SortOrder":2,
"ModuleId":null,
"Menus":{
}
},
{
"MenuId":3,
"MenuName":"Portfolio",
"MenuLink":null,
"Action":null,
"Controller":null,
"ParentID":null,
"SortOrder":3,
"ModuleId":null,
"Menus":{
}
},
{
"MenuId":4,
"MenuName":"Analytics",
"MenuLink":null,
"Action":null,
"Controller":null,
"ParentID":null,
"SortOrder":4,
"ModuleId":null,
"Menus":{
}
},
{
"MenuId":5,
"MenuName":"Instructions",
"MenuLink":null,
"Action":null,
"Controller":null,
"ParentID":null,
"SortOrder":5,
"ModuleId":null,
"Menus":{
}
},
{
"MenuId":6,
"MenuName":"Data Upload",
"MenuLink":null,
"Action":null,
"Controller":null,
"ParentID":null,
"SortOrder":6,
"ModuleId":null,
"Menus":{
}
},
{
"MenuId":7,
"MenuName":"Administration",
"MenuLink":null,
"Action":null,
"Controller":null,
"ParentID":null,
"SortOrder":7,
"ModuleId":null,
"Menus":[
{
"MenuId":8,
"MenuName":"Masters",
"MenuLink":null,
"Action":null,
"Controller":null,
"ParentID":7,
"SortOrder":1,
"ModuleId":null,
"Menus":[
{
"MenuId":10,
"MenuName":"Currency",
"MenuLink":"/Currencies/Index",
"Action":"Index",
"Controller":"Currencies",
"ParentID":8,
"SortOrder":1,
"ModuleId":null,
"Menus":{
}
},
{
"MenuId":11,
"MenuName":"Country",
"MenuLink":"/Countries/Index",
"Action":"Index",
"Controller":"Countries",
"ParentID":8,
"SortOrder":2,
"ModuleId":null,
"Menus":{
}
}
]
},
{
"MenuId":9,
"MenuName":"User Management",
"MenuLink":null,
"Action":null,
"Controller":null,
"ParentID":7,
"SortOrder":2,
"ModuleId":null,
"Menus":{
}
}
]
}
]
}
];
for(var i = 0, j = data[0].menu.length; i<j; i++) {
var root_menu = data[0].menu[i];
if(root_menu.hasOwnProperty("MenuId")) {
$("#menu").append("<li>" + root_menu.MenuName + "</li>");
if(root_menu.hasOwnProperty("Menus") && root_menu.Menus.length > 0) {
$("#menu").append("<li><ul id='menu_" + root_menu.MenuId + "'>");
for(var n = 0, m = root_menu.Menus.length; n<m; n++) {
var sub_menu = root_menu.Menus[n];
if(sub_menu.hasOwnProperty("MenuId")) {
$("#menu_" + root_menu.MenuId).append("<li>" + sub_menu.MenuName + "</li>");
/* e.t.c but DONT REPEAT YOURSELF */
/* but if there is 50 levels- what a u going to do? */
/* look at recursive way */
}
}
$("#menu").append("</li></ul>");
}
}
}