I have problems with a nasty JSON object that I need to convert to a variable depth JS object.
Soon: (I am using jQuery)
var nastyJSON_string = "{"generics_utenteID":"1","generics_elencoID":"1","mainbar_ade_stepID_0":"1","mainbar_ade_stepID_1":"3","mainbar_ade_stepTitle_0":"blablabla", "mainbar_ade_stepTitle_1" : "quiquoqua"}"; var nastyJSON = JSON.parse(nastyJSON_string); // nastyJSON if parsed correctly now is: {generics_utenteID:"1",generics_elencoID:"1" ...and so on}.
Now I need to convert this nastyJSON to a variable depth JS object. I mean:
var reusableJSObject = { generics : { utenteID : 1, elencoID : 1 }, mainbar : { ade : { stepID : { 0 : 1, 1 : 3 }, stepTitle : { 0 : "blablabla", 1 : "quiquoqua" } } } }
My best bet is to create it manually, loop nastyJSON, the keys of the switch cover and create objects that add values ββat the end of a well-known depth.
Like this:
jQuery.each(nastyJSON, function(key,value){ var keysp = key.split('_'); switch(keysp[0]) { //# generics case 'generics': if(!reusableJSObject.hasOwnProperty(keysp[0])) { reusableJSObject[keysp[0]] = new Object(); }; switch(keysp[1]) { //# utenteID case 'utenteID': if(!reusableJSObject[keysp[0]].hasOwnProperty(keysp[1])) { reusableJSObject[keysp[0]][keysp[1]]; }; reusableJSObject[keysp[0]][keysp[1]] = Number(value); break; //# elencoID case 'elencoID': if(!reusableJSObject[keysp[0]].hasOwnProperty(keysp[1])) { reusableJSObject[keysp[0]][keysp[1]]; }; reusableJSObject[keysp[0]][keysp[1]] = Number(value); break; } break; //# mainbar case 'mainbar': if(!reusableJSObject.hasOwnProperty(keysp[0])) { reusableJSObject[keysp[0]] = new Object(); }; break; //... and So On! } });
But, if at first I do not know the structure of nastyJSON, and I only know that nastyJSON has keys that I needed to separate and enclose until the end of the split?
Thanks in advance.
source share