Convert JavaScript Object Into URI-encoded String


Answer :

Please look closely at both answers I provide here to determine which fits you best.






Answer 1:



Likely what you need: Readies a JSON to be used in a URL as a single argument, for later decoding.



jsfiddle



encodeURIComponent(JSON.stringify({"test1":"val1","test2":"val2"}))+"<div>");


Result:



%7B%22test%22%3A%22val1%22%2C%22test2%22%3A%22val2%22%7D


For those who just want a function to do it:



function jsonToURI(json){ return encodeURIComponent(JSON.stringify(json)); }

function uriToJSON(urijson){ return JSON.parse(decodeURIComponent(urijson)); }





Answer 2:



Uses a JSON as a source of key value pairs for x-www-form-urlencoded output.



jsfiddle



// This should probably only be used if all JSON elements are strings
function xwwwfurlenc(srcjson){
if(typeof srcjson !== "object")
if(typeof console !== "undefined"){
console.log("\"srcjson\" is not a JSON object");
return null;
}
u = encodeURIComponent;
var urljson = "";
var keys = Object.keys(srcjson);
for(var i=0; i <keys.length; i++){
urljson += u(keys[i]) + "=" + u(srcjson[keys[i]]);
if(i < (keys.length-1))urljson+="&";
}
return urljson;
}

// Will only decode as strings
// Without embedding extra information, there is no clean way to
// know what type of variable it was.
function dexwwwfurlenc(urljson){
var dstjson = {};
var ret;
var reg = /(?:^|&)(\w+)=(\w+)/g;
while((ret = reg.exec(urljson)) !== null){
dstjson[ret[1]] = ret[2];
}
return dstjson;
}


I'm surprised that no one has mentioned URLSearchParams



var prms = new URLSearchParams({
firstName: "Jonas",
lastName: "Gauffin"
});
console.log(prms.toString());
// firstName=Jonas&lastName=Gauffin


See jQuery.param(...). Converts to uri, see link for more information!



Comments

Popular posts from this blog

530 Valid Hostname Is Expected When Setting Up IIS 10 For Multiple Sites

Android - ImageView With Rounded Only One Corner

Android - SetOnClickListener Vs OnClickListener Vs View.OnClickListener