Query-string encoding of a Javascript Object

前端 未结 30 3626
渐次进展
渐次进展 2020-11-22 00:23

Do you know a fast and simple way to encode a Javascript Object into a string that I can pass via a GET Request?

No jQuery, no

30条回答
  •  傲寒
    傲寒 (楼主)
    2020-11-22 00:57

    Rails / PHP Style Query Builder

    This method converts a Javascript object into a URI Query String. Also handles nested arrays and objects (in Rails / PHP syntax):

    function serializeQuery(params, prefix) {
      const query = Object.keys(params).map((key) => {
        const value  = params[key];
    
        if (params.constructor === Array)
          key = `${prefix}[]`;
        else if (params.constructor === Object)
          key = (prefix ? `${prefix}[${key}]` : key);
    
        if (typeof value === 'object')
          return serializeQuery(value, key);
        else
          return `${key}=${encodeURIComponent(value)}`;
      });
    
      return [].concat.apply([], query).join('&');
    }
    

    Example Usage:

    let params = {
      a: 100,
      b: 'has spaces',
      c: [1, 2, 3],
      d: { x: 9, y: 8}
    }
    
    serializeQuery(params)
    // returns 'a=100&b=has%20spaces&c[]=1&c[]=2&c[]=3&d[x]=9&d[y]=8
    

提交回复
热议问题