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

Popular posts from this blog

How to mention the localhost in android -

php - Calling a template part from a post -

c# - String.format() DateTime With Arabic culture -