Object to GET Parameters

This will demonstrate how to convert an Object to GET parameter style string.

by Brandon Dixon

HTML

<body>
<before>
  
</before>
<after>
  
</after>
</body>

JavaScript

var obj = {
    "stage": 50,
    "categories": [25, 23, 28],
    "advocates": [{
        "key": "7195",
        "label": "kallol saikia"
    }],
    "cities": [{
        "key": 390,
        "label": "Delhi"
    }, {
        "key": 6,
        "label": "Mumbai"
    }],
    "checkbox-filed": true,
    "checkbox-active": true
};

document.getElementsByTagName("before")[0].innerHTML = "<p>"+JSON.stringify(obj)+"</p>";
document.getElementsByTagName("after")[0].innerHTML = "<p>"+paramatize(obj)+"</p>";

/**
  * This will turn an object into a GET style parameter
  * This scans recursively if 2nd param is set to true, but "flattens" every property into one string, so this may cause some overriding
  * This will encode the keys and values if 3rd param is set to true
  */
function paramatize(obj,recursive = true,encode = true) {
  let str = "";

  let len = Object.keys(obj).length
  let i = 0;
  for (let key in obj) {

    i++;
    if (typeof obj[key] === 'object' && recursive) {
      str += paramatize(obj[key]);
    } else {
      let nKey = (encode)?encodeURIComponent(key):key;
      let nValue = (encode)?encodeURIComponent(obj[key]):obj[key];

      str += nKey+"="+nValue;
    }

    if (i < len) {
      str += "&";
    }
  }

  return str;
}