javascript - Convert string to object hierarchy -


i have following string returned api , want convert object hierarchy using javascript.

the string received is:

"paymentinfolist.paymentinfo(0).receiver.amount":"12.00" 

i want convert javascript object like:

{     paymentinfolist: {         paymentinfo: [{              receiver: {                  amount: 12.0              }         }]     } } 

i write own parser wonder if there code out there.

update

based on answer @jasoncust here parser parse full response paypal adaptive payments pay method: https://github.com/danielflippance/paypal-ap-parser

i don't know of existing parser handles format. maybe on paypal's developer site? if roll own using recursive function example below. haven't tested thoroughly it's poc it's easy enough do.

function setobjval(obj, paths, val) {   var path;   var arrayinfo;    if (paths.length === 0) {     return val;   }    obj = obj || {};   path = paths.shift();   arrayinfo = path.match(arrayregexp);    if (arrayinfo) {     path = arrayinfo[1];      if (!array.isarray(obj[path])) {       obj[path] = [];     }      obj[path][arrayinfo[2]] = setobjval(obj[path][arrayinfo[2]], paths, val);   }   else {     obj[path] = setobjval(obj[path], paths, val);   }    return obj; } 

var arrayregexp = /^(\w+)\((\d+)\)$/;    var input = '"paymentinfolist.paymentinfo(0).receiver.amount":"12.00"';  var pair = input.split(':').map(function (str) { return str.replace(/"/g, ''); });  var newobj = setobjval({}, pair[0].split('.'), pair[1]);    function setobjval(obj, paths, val) {    var path;    var arrayinfo;        if (paths.length === 0) {      return val;    }      obj = obj || {};    path = paths.shift();    arrayinfo = path.match(arrayregexp);        if (arrayinfo) {      path = arrayinfo[1];            if (!array.isarray(obj[path])) {        obj[path] = [];      }            obj[path][arrayinfo[2]] = setobjval(obj[path][arrayinfo[2]], paths, val);    }    else {      obj[path] = setobjval(obj[path], paths, val);    }        return obj;  }    document.write('<pre>' + json.stringify(newobj, null, 4) + '</pre>');

alternatively if want use lodash use _.set():

var newobj = _.set({}, pair[0].replace(/\(/g, '[').replace(/\)/g, ']'), pair[1]); 

var input = '"paymentinfolist.paymentinfo(0).receiver.amount":"12.00"';  var pair = input.split(':').map(function (str) { return str.replace(/"/g, ''); });    var newobj = _.set({}, pair[0].replace(/\(/g, '[').replace(/\)/g, ']'), pair[1]);    document.write('<pre>' + json.stringify(newobj, null, 4) + '</pre>');
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.0/lodash.min.js"></script>


Comments