Search code examples
node.jsjsonx-www-form-urlencoded

How to convert for urlencoded array into json in node js


I am having a form-urlencoded request as follows:enter image description here

but I have to convert this request in json as follows:

{
"version":4.2,
"auth_token": "xxxxxxxx",
"zcontacts":[
    { "phone": "xxxxx", "name": "xxxx" },
    { "phone": "112", "name": "Distress Number" },
    { "phone": "1800-300-xxxx", "name": "UIDAI" },
    { "phone": "44 xxxxx, "name": "Ab zz" }
]
}

Here below is my code which I am trying:

index(req_data) {
    const self = this;

    return new Promise((resolve, reject) => {
        console.log(typeof req_data)

        let req_body = {}
        req_body.version = req_data.version;
        req_body.auth_token = req_data.auth_token;
        let contacts_list = [];
        return Promise.each(req_data.zcontacts,(contact, key, length) => {
            // Logic starts from here
            if(key === 0) {
                contacts_list.push({
                    phone: req_data.zcontacts[key],
                    name: req_data.zcontacts[(key+1)]
                })
            } else if(key > 0) {
                contacts_list.push({
                    phone: req_data.zcontacts[(key+3)],
                    name: req_data.zcontacts[(key+4)]
                })
            }
        }).then(() => {
            req_body.zcontacts = contacts_list;
            resolve(req_body)
        });

Can anyone suggest what should be changed in the code under the loop?


Solution

  • I got it:

    return Promise.each(req_data.zcontacts,(contact, key, length) => {
            if(key % 2 === 0) {
              contacts_list.push({
                phone: req_data.zcontacts[key],
                name: req_data.zcontacts[(key+1)]
              })
            }
        }).then(() => {
            req_body.zcontacts = contacts_list;
            resolve(req_body)
        });