I've been trying in vein to find a solution but nothing is coming up. Due to restrictions, have to build a mobile navigation system from a JSON object given to me by the proprietary server. They are allowing jQuery 1.12.4 but no other frameworks can be used or even the updated jQuery 3. Can't load PHP, Python or any other languages. So have to find either a pure javascript or jQuery 1.12.4 solution.
There will be a variable number of menu items and variable number of sub-menu items. I know you can access through bracket notation (can't use dot notation as the keys have dots in them from the server) but how do you go about accessing with variables or building it in a loop.
example i'm trying to get the inner object L.3.170 but need to build the bracket reference variably. and making a "back" feature from a string.
build the following REF from a string "L.1.171~L.2.170", initial is to split on the tilde and build the REF from a loop but not finding any examples on how to do that. I found a few eval ones but they don't seem to work.
REF to build: OBJ.root['L.1.171']['L.2.170']
sub-menu to build: OBJ.root['L.1.171']['L.2.170']['L.3.170']
replacing the literal brackets with variable ones and there will be a variable depth to the sub menus.
all of the "L" key names are unique so is there some kind of find function (like with arrays)? Nothing is coming up or working on how to find a sub object inside the JSON.
JSON (OBJ) from Server:
{
"root": {
"SubCount": 4,
"L.1.22": {
"img": "",
"CategoryID": 635,
"SubCount": 4,
"L.2.4": {
"img": "",
"CategoryID": 692,
"SubCount": 1,
"L.3.4": { "img": "", "CategoryID": 229, "SubCount": 0 }
},
"L.2.10": {
"img": "",
"CategoryID": 213,
"SubCount": 5,
"L.3.6": { "img": "", "CategoryID": 46, "SubCount": 0 },
"L.3.7": { "img": "", "CategoryID": 48, "SubCount": 0 },
"L.3.8": { "img": "", "CategoryID": 49, "SubCount": 0 },
"L.3.9": { "img": "", "CategoryID": 50, "SubCount": 0 },
"L.3.10": { "img": "", "CategoryID": 95, "SubCount": 0 }
},
"L.2.14": {
"img": "",
"CategoryID": 212,
"SubCount": 3,
"L.3.12": { "img": "", "CategoryID": 53, "SubCount": 0 },
"L.3.13": { "img": "", "CategoryID": 55, "SubCount": 0 },
"L.3.14": { "img": "", "CategoryID": 98, "SubCount": 0 }
},
"L.2.22": {
"img": "",
"CategoryID": 211,
"SubCount": 7,
"L.3.16": { "img": "", "CategoryID": 46, "SubCount": 0 },
"L.3.17": { "img": "", "CategoryID": 49, "SubCount": 0 },
"L.3.18": { "img": "", "CategoryID": 50, "SubCount": 0 },
"L.3.19": { "img": "", "CategoryID": 52, "SubCount": 0 },
"L.3.20": { "img": "", "CategoryID": 54, "SubCount": 0 },
"L.3.21": { "img": "", "CategoryID": 95, "SubCount": 0 },
"L.3.22": { "img": "", "CategoryID": 98, "SubCount": 0 }
}
},
"L.1.100": {
"img": "",
"CategoryID": 689,
"SubCount": 6,
"L.2.38": {
"img": "",
"CategoryID": 225,
"SubCount": 14,
"L.3.25": { "img": "", "CategoryID": 612, "SubCount": 0 },
"L.3.26": { "img": "", "CategoryID": 773, "SubCount": 0 },
"L.3.27": { "img": "", "CategoryID": 1174, "SubCount": 0 },
"L.3.28": { "img": "", "CategoryID": 135, "SubCount": 0 },
"L.3.29": { "img": "", "CategoryID": 451, "SubCount": 0 },
"L.3.30": { "img": "", "CategoryID": 1169, "SubCount": 0 },
"L.3.31": { "img": "", "CategoryID": 403, "SubCount": 0 },
"L.3.32": { "img": "", "CategoryID": 136, "SubCount": 0 },
"L.3.33": { "img": "", "CategoryID": 133, "SubCount": 0 },
"L.3.34": { "img": "", "CategoryID": 134, "SubCount": 0 },
"L.3.35": { "img": "", "CategoryID": 138, "SubCount": 0 },
"L.3.36": { "img": "", "CategoryID": 137, "SubCount": 0 },
"L.3.37": { "img": "", "CategoryID": 132, "SubCount": 0 },
"L.3.38": { "img": "", "CategoryID": 130, "SubCount": 0 }
},
"L.2.53": {
"img": "",
"CategoryID": 217,
"SubCount": 14,
"L.3.40": { "img": "", "CategoryID": 108, "SubCount": 0 },
"L.3.41": { "img": "", "CategoryID": 611, "SubCount": 0 },
"L.3.42": { "img": "", "CategoryID": 772, "SubCount": 0 },
"L.3.43": { "img": "", "CategoryID": 448, "SubCount": 0 },
"L.3.44": { "img": "", "CategoryID": 103, "SubCount": 0 },
"L.3.45": { "img": "", "CategoryID": 404, "SubCount": 0 },
"L.3.46": { "img": "", "CategoryID": 106, "SubCount": 0 },
"L.3.47": { "img": "", "CategoryID": 105, "SubCount": 0 },
"L.3.48": { "img": "", "CategoryID": 107, "SubCount": 0 },
"L.3.49": { "img": "", "CategoryID": 104, "SubCount": 0 },
"L.3.50": { "img": "", "CategoryID": 266, "SubCount": 0 },
"L.3.51": { "img": "", "CategoryID": 1168, "SubCount": 0 },
"L.3.52": { "img": "", "CategoryID": 1173, "SubCount": 0 },
"L.3.53": { "img": "", "CategoryID": 112, "SubCount": 0 }
},
"L.2.68": {
"img": "",
"CategoryID": 219,
"SubCount": 14,
"L.3.55": { "img": "", "CategoryID": 613, "SubCount": 0 },
"L.3.56": { "img": "", "CategoryID": 775, "SubCount": 0 },
"L.3.57": { "img": "", "CategoryID": 450, "SubCount": 0 },
"L.3.58": { "img": "", "CategoryID": 144, "SubCount": 0 },
"L.3.59": { "img": "", "CategoryID": 146, "SubCount": 0 },
"L.3.60": { "img": "", "CategoryID": 400, "SubCount": 0 },
"L.3.61": { "img": "", "CategoryID": 145, "SubCount": 0 },
"L.3.62": { "img": "", "CategoryID": 151, "SubCount": 0 },
"L.3.63": { "img": "", "CategoryID": 150, "SubCount": 0 },
"L.3.64": { "img": "", "CategoryID": 147, "SubCount": 0 },
"L.3.65": { "img": "", "CategoryID": 1170, "SubCount": 0 },
"L.3.66": { "img": "", "CategoryID": 1176, "SubCount": 0 },
"L.3.67": { "img": "", "CategoryID": 143, "SubCount": 0 },
"L.3.68": { "img": "", "CategoryID": 141, "SubCount": 0 }
},
"L.2.83": {
"img": "",
"CategoryID": 220,
"SubCount": 14,
"L.3.70": { "img": "", "CategoryID": 614, "SubCount": 0 },
"L.3.71": { "img": "", "CategoryID": 774, "SubCount": 0 },
"L.3.72": { "img": "", "CategoryID": 1171, "SubCount": 0 },
"L.3.73": { "img": "", "CategoryID": 1175, "SubCount": 0 },
"L.3.74": { "img": "", "CategoryID": 453, "SubCount": 0 },
"L.3.75": { "img": "", "CategoryID": 153, "SubCount": 0 },
"L.3.76": { "img": "", "CategoryID": 399, "SubCount": 0 },
"L.3.77": { "img": "", "CategoryID": 154, "SubCount": 0 },
"L.3.78": { "img": "", "CategoryID": 155, "SubCount": 0 },
"L.3.79": { "img": "", "CategoryID": 161, "SubCount": 0 },
"L.3.80": { "img": "", "CategoryID": 160, "SubCount": 0 },
"L.3.81": { "img": "", "CategoryID": 156, "SubCount": 0 },
"L.3.82": { "img": "", "CategoryID": 159, "SubCount": 0 },
"L.3.83": { "img": "", "CategoryID": 158, "SubCount": 0 }
},
"L.2.98": {
"img": "",
"CategoryID": 698,
"SubCount": 14,
"L.3.85": { "img": "", "CategoryID": 776, "SubCount": 0 },
"L.3.86": { "img": "", "CategoryID": 1167, "SubCount": 0 },
"L.3.87": { "img": "", "CategoryID": 253, "SubCount": 0 },
"L.3.88": { "img": "", "CategoryID": 608, "SubCount": 0 },
"L.3.89": { "img": "", "CategoryID": 473, "SubCount": 0 },
"L.3.90": { "img": "", "CategoryID": 256, "SubCount": 0 },
"L.3.91": { "img": "", "CategoryID": 258, "SubCount": 0 },
"L.3.92": { "img": "", "CategoryID": 259, "SubCount": 0 },
"L.3.93": { "img": "", "CategoryID": 260, "SubCount": 0 },
"L.3.94": { "img": "", "CategoryID": 254, "SubCount": 0 },
"L.3.95": { "img": "", "CategoryID": 255, "SubCount": 0 },
"L.3.96": { "img": "", "CategoryID": 262, "SubCount": 0 },
"L.3.97": { "img": "", "CategoryID": 1172, "SubCount": 0 },
"L.3.98": { "img": "", "CategoryID": 397, "SubCount": 0 }
},
"L.2.100": {
"img": "",
"CategoryID": 218,
"SubCount": 1,
"L.3.100": { "img": "", "CategoryID": 208, "SubCount": 0 }
}
},
"L.1.122": {
"img": "",
"CategoryID": 870,
"SubCount": 6,
"L.2.108": {
"img": "", "CategoryID": 871, "SubCount": 6,
"L.3.103": { "img": "", "CategoryID": 883, "SubCount": 0 },
"L.3.104": { "img": "", "CategoryID": 885, "SubCount": 0 },
"L.3.105": { "img": "", "CategoryID": 873, "SubCount": 0 },
"L.3.106": { "img": "", "CategoryID": 886, "SubCount": 0 },
"L.3.107": { "img": "", "CategoryID": 872, "SubCount": 0 },
"L.3.108": { "img": "", "CategoryID": 884, "SubCount": 0 }
},
"L.2.109": { "img": "", "CategoryID": 886, "SubCount": 0 },
"L.2.110": { "img": "", "CategoryID": 872, "SubCount": 0 },
"L.2.111": { "img": "", "CategoryID": 884, "SubCount": 0 },
"L.2.112": { "img": "", "CategoryID": 876, "SubCount": 0 },
"L.2.122": {
"img": "",
"CategoryID": 672,
"SubCount": 9,
"L.3.114": { "img": "", "CategoryID": 839, "SubCount": 0 },
"L.3.115": { "img": "", "CategoryID": 210, "SubCount": 0 },
"L.3.116": { "img": "", "CategoryID": 277, "SubCount": 0 },
"L.3.117": { "img": "", "CategoryID": 639, "SubCount": 0 },
"L.3.118": { "img": "", "CategoryID": 870, "SubCount": 0 },
"L.3.119": { "img": "", "CategoryID": 282, "SubCount": 0 },
"L.3.120": { "img": "", "CategoryID": 1191, "SubCount": 0 },
"L.3.121": { "img": "", "CategoryID": 932, "SubCount": 0 },
"L.3.122": { "img": "", "CategoryID": 332, "SubCount": 0 }
}
},
"L.1.171": {
"img": "",
"CategoryID": 672,
"SubCount": 9,
"L.2.124": { "img": "", "CategoryID": 839, "SubCount": 0 },
"L.2.125": { "img": "", "CategoryID": 210, "SubCount": 0 },
"L.2.132": {
"img": "",
"CategoryID": 277,
"SubCount": 6,
"L.3.127": { "img": "1173128.Chat Icon.png", "CategoryID": 1211, "SubCount": 0 },
"L.3.128": { "img": "", "CategoryID": 1159, "SubCount": 0 },
"L.3.129": { "img": "", "CategoryID": 1084, "SubCount": 0 },
"L.3.130": { "img": "", "CategoryID": 1150, "SubCount": 0 },
"L.3.131": { "img": "", "CategoryID": 1138, "SubCount": 0 },
"L.3.132": { "img": "", "CategoryID": 1119, "SubCount": 0 }
},
"L.2.145": {
"img": "",
"CategoryID": 639,
"SubCount": 12,
"L.3.134": { "img": "", "CategoryID": 122, "SubCount": 0 },
"L.3.135": { "img": "", "CategoryID": 121, "SubCount": 0 },
"L.3.136": { "img": "", "CategoryID": 512, "SubCount": 0 },
"L.3.137": { "img": "", "CategoryID": 124, "SubCount": 0 },
"L.3.138": { "img": "", "CategoryID": 125, "SubCount": 0 },
"L.3.139": { "img": "", "CategoryID": 127, "SubCount": 0 },
"L.3.140": { "img": "", "CategoryID": 878, "SubCount": 0 },
"L.3.141": { "img": "", "CategoryID": 877, "SubCount": 0 },
"L.3.142": { "img": "", "CategoryID": 880, "SubCount": 0 },
"L.3.143": { "img": "", "CategoryID": 879, "SubCount": 0 },
"L.3.144": { "img": "", "CategoryID": 874, "SubCount": 0 },
"L.3.145": { "img": "", "CategoryID": 282, "SubCount": 0 }
},
"L.2.152": {
"img": "",
"CategoryID": 870,
"SubCount": 6,
"L.3.147": { "img": "", "CategoryID": 871, "SubCount": 0 },
"L.3.148": { "img": "", "CategoryID": 886, "SubCount": 0 },
"L.3.149": { "img": "", "CategoryID": 872, "SubCount": 0 },
"L.3.150": { "img": "", "CategoryID": 884, "SubCount": 0 },
"L.3.151": { "img": "", "CategoryID": 876, "SubCount": 0 },
"L.3.152": { "img": "", "CategoryID": 672, "SubCount": 0 }
},
"L.2.158": {
"img": "",
"CategoryID": 282,
"SubCount": 5,
"L.3.154": { "img": "", "CategoryID": 122, "SubCount": 0 },
"L.3.155": { "img": "", "CategoryID": 512, "SubCount": 0 },
"L.3.156": { "img": "", "CategoryID": 121, "SubCount": 0 },
"L.3.157": { "img": "", "CategoryID": 124, "SubCount": 0 },
"L.3.158": { "img": "", "CategoryID": 127, "SubCount": 0 }
},
"L.2.165": {
"img": "",
"CategoryID": 1191,
"SubCount": 6,
"L.3.160": { "img": "", "CategoryID": 1184, "SubCount": 0 },
"L.3.161": { "img": "", "CategoryID": 1186, "SubCount": 0 },
"L.3.162": { "img": "", "CategoryID": 1185, "SubCount": 0 },
"L.3.163": { "img": "", "CategoryID": 1187, "SubCount": 0 },
"L.3.164": { "img": "", "CategoryID": 1189, "SubCount": 0 },
"L.3.165": { "img": "", "CategoryID": 1190, "SubCount": 0 }
},
"L.2.170": {
"img": "",
"CategoryID": 932,
"SubCount": 4,
"L.3.167": { "img": "", "CategoryID": 936, "SubCount": 0 },
"L.3.168": { "img": "", "CategoryID": 1181, "SubCount": 0 },
"L.3.169": { "img": "", "CategoryID": 331, "SubCount": 0 },
"L.3.170": { "img": "", "CategoryID": 1182, "SubCount": 0 }
},
"L.2.171": { "img": "", "CategoryID": 332, "SubCount": 0 }
}
}
}
Object.keys()might be able to help you out here. You could get an array of those 'L' key names and navigate accordingly. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…data, you could simply doObject.keys(data.root)that would come back with['SubCount','L.1.22','L.1.100',...]. Unfortunately, you'll have to do some work to fetch keys, traverse, fetch new keys, traverse, etc.