Convert JavaScript object into URI-encoded string

后端 未结 11 1419
庸人自扰
庸人自扰 2020-12-04 18:54

I got a JavaScript object which I would like to get x-www-form-urlencoded.

Something like $(\'#myform\').serialize() but for objects.

11条回答
  •  情话喂你
    2020-12-04 19:30

    FYI, the accepted answer doesn't include support for nested objects. Here's one way that you can accomplish this:

    function xwwwfurlenc(srcjson, parent=""){
        if(typeof srcjson !== "object")
          if(typeof console !== "undefined"){
            console.log("\"srcjson\" is not a JSON object");
            return null;
        }
    
        let u = encodeURIComponent;
        let urljson = "";
        let keys = Object.keys(srcjson);
    
        for(let i=0; i < keys.length; i++){
          let k = parent ? parent + "[" + keys[i] + "]" : keys[i];
    
          if(typeof srcjson[keys[i]] !== "object"){
            urljson += u(k) + "=" + u(srcjson[keys[i]]);
          } else {
            urljson += xwwwfurlenc(srcjson[keys[i]], k)
          }
          if(i < (keys.length-1))urljson+="&";
        }
    
        return urljson;
    }
    

提交回复
热议问题