json adding dynamic childs to dynamic keys -
i trying format bunch of data able retrieve in format below. (i put readable version commented out) want put each line in json object in way output(see @ bottom) shows. holds last item's details whereas want each item kept under correct mgid , fgid values.
mgid mgname fgid fgname itemid itemname
6272440:beverage:6272963:coke:6274904:pepsi@@@
i use jsonobj[mgid][fgid][miid], expecting create separate [miid]'s under jsonobj[mgid][fgid].. appearently missing or not work in way. can please tell me missing or alternative way welcomes. thanks!!
/* data readable format 6272440:beverage:6272963:coke:6274904:pepsi@@@ 6272440:beverage:6272963:coke:6274494:coco cola 1 lt@@@ 6272440:beverage:6272951:milk:6274300:skim 1 lt@@@ 6272440:beverage:6272951:milk:6274130:full cream@@@ 6272437:food:6272919:breakfast menu:6274947:bacon , egg@@@ 6272437:food:6272915:lunch menu:6274766:chicken burger@@@ 6272437:food:6272915:lunch menu:6274922:vegi sandwich@@@ 6272437:food:6272915:lunch menu:6274900:garlic bread"; */ var sampledata = "6272440:beverage:6272963:coke:6274904:pepsi@@@6272440:beverage:6272963:coke:6274494:coco cola 1 lt@@@6272440:beverage:6272951:milk:6274300:skim 1 lt@@@6272440:beverage:6272951:milk:6274130:full cream@@@6272437:food:6272919:breakfast menu:6274947:bacon , egg@@@6272437:food:6272915:lunch menu:6274766:chicken burger@@@6272437:food:6272915:lunch menu:6274922:vegi sandwich@@@6272437:food:6272915:lunch menu:6274900:garlic bread"; var elements = sampledata.split("@@@"); var jsonobj = {}; var menuitemsarr = []; var previousmgid=""; var previousfgid=""; for(var i=0; i<elements.length; i++) { var nextmenupack = elements[i]; var nextmenupackinnerhtml = nextmenupack; //nextmenupack.innerhtml; var nextmenupackarr = nextmenupackinnerhtml.split(":"); var mgid = nextmenupackarr[0]; var mgname = nextmenupackarr[1]; var fgid = nextmenupackarr[2]; var fgname = nextmenupackarr[3]; var miid = nextmenupackarr[4]; var miname = nextmenupackarr[5]; console.log(mgname +"-"+fgname+"-"+miname); jsonobj[mgid] = {} ; jsonobj[mgid][fgid] = {}; //var jsonobj = {}; jsonobj[mgid][fgid][miid] = { "mgname" : mgname, "mgid": miid, "fgname": fgname, "fgid": fgid, "miname" : miname, "miid": miid }; } document.write('<pre>'+json.stringify(jsonobj, null, "\t")+'</pre>');
output
{ "6272440": { //major group id "6272951": { //family group id "6274130": { // menuitem id - last one, others overwritten! "mgname": "beverage", "mgid": "6274130", "fgname": "milk", "fgid": "6272951", "miname": "full cream", "miid": "6274130" } } }, "6272437": { "6272915": { "6274900": {// menuitem id - last one, others overwritten! "mgname": "food", "mgid": "6274900", "fgname": "lunch menu", "fgid": "6272915", "miname": "garlic bread", "miid": "6274900" } } } }
only initialize jsonobj[mgid]
, jsonobj[mgid][fgid]
if they're not there.
jsonobj[mgid] = jsonobj[mgid] || {} ; jsonobj[mgid][fgid] = jsonobj[mgid][fgid] || {}; //var jsonobj = {}; jsonobj[mgid][fgid][miid] = { "mgname" : mgname, "mgid": miid, "fgname": fgname, "fgid": fgid, "miname" : miname, "miid": miid };
Comments
Post a Comment